假设有如下的工厂。我想知道是否有可能不包含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