假設有如下的工廠。我想知道是否有可能不包含ObjectA.h和ObjectB.h。工廠設計模式問題
目錄結構
工廠
| -----對象A
| -----對象B
因爲我不想以包括子頭文件目錄,有沒有辦法做到這一點? 如果有新的objectC,則不需要修改工廠類。如果類型是「TypeC」,它將自動創建ObjectC。
#include "ObjectA.h"
#include "ObjectB.h"
object* create(const string& type)
{
if (type == "typeA")
{
return new ObjectA();
}
else
{
return new ObjectB();
}
};
這可能對你有用,請看這裏http://www.codeproject.com/Articles/363338/Factory-Pattern-in-Cplusplus和這裏http://stackoverflow.com/questions/ 8719119 /壞實踐返回唯一ptr爲原始類指針所有權語義 – rsc 2012-07-13 06:44:17
謝謝。這真的很有幫助。但是,註冊函數調用在工廠的構造器中。我只是想知道把它放在具體的課堂上是否可行。 – 2012-07-13 09:01:16