【发布时间】:2009-02-11 11:58:30
【问题描述】:
我有一个带有几个派生类的 ABC。为了创建这些派生类,我使用工厂模式:
.h 文件:
class derivedFactory
{
public:
base* createInstance();
};
.cpp 文件:
base* derivedFactory::createInstance()
{
return new derived();
}
这比仅仅拥有一个免费功能有什么好处:
.h 文件:
base* derivedFactoryFunction();
.cpp 文件:
base* derivedFactoryFunction()
{
return new derived();
}
另外:我使用抽象工厂模式进行依赖注入。我可能会使用基于 ABC 的继承层次结构:
class objectCreator
{
public:
base* create() = 0;
};
在函数指针上使用 this 有什么好处:
boost::function<base* ()> factory_ptr;
使用 boost::bind/lambda 这似乎使我的代码更具可组合性,如果我希望我可以在其中包装一个真正的工厂对象。我可以看到性能可能会略有下降,但这很值得担心,因为它只在启动期间调用。
【问题讨论】:
标签: c++ design-patterns factory