我不知道是否有這個官方名稱,但我一直在玩我喜歡稱之爲「自制」模式。基本上,這是抽象基類自身作爲工廠的時候。讓我解釋一下:「自制」模式
我在我的系統中有Foo對象和Bar對象,它們通過接口FooInterface和BarInterface使用。我需要爲我的客戶提供正確的Foo和Bar類型。決定創建哪個具體的Foo對象是在編譯時做出的。例如,如果你在win32上編譯,你只想創建Win32Foo對象,並且如果你在OSX上編譯,你只想創建OSXFoo對象等等。但是,決定創建哪個具體Bar對象是在運行時根據關鍵字串創建的。
現在,我的問題是關於實施此方案的最佳方式。一種方法我想出使用常規的工廠:
shared_ptr<FooInterface> foo = FooFactory::create();
shared_ptr<BarInterface> happyBar = BarFactory::create("Happy");
shared_ptr<BarInterface> sadBar = BarFactory::create("Sad");
另一種方法是用我稱之爲「自我工廠」:
shared_ptr<FooInterface> foo = FooInterface::create();
shared_ptr<BarInterface> happyBar = BarInterface::create("Happy");
shared_ptr<BarInterface> sadBar = BarInterface::create("Sad");
哪些優點和每種方法的利弊,無論是從一個可用性的立場,從建築的角度來看?
我認爲你所建議的自制工廠也稱爲原型模式。您可能可以查看關於該模式的文獻以獲取想法。 – 2009-06-24 22:06:24