Wil*_*ley 6 c++ design-patterns factory
我有一个带有几个派生类的ABC.要创建这些派生类,我使用工厂模式:
.h文件:
class derivedFactory
{
public:
base* createInstance();
};
Run Code Online (Sandbox Code Playgroud)
.cpp文件:
base* derivedFactory::createInstance()
{
return new derived();
}
Run Code Online (Sandbox Code Playgroud)
只有拥有一个免费功能,这有什么好处:
.h文件:
base* derivedFactoryFunction();
Run Code Online (Sandbox Code Playgroud)
.cpp文件:
base* derivedFactoryFunction()
{
return new derived();
}
Run Code Online (Sandbox Code Playgroud)
另外:我使用抽象工厂模式进行依赖注入.我可能会使用基于ABC的继承层次结构:
class objectCreator
{
public:
base* create() = 0;
};
Run Code Online (Sandbox Code Playgroud)
在函数指针上使用它有什么好处:
boost::function<base* ()> factory_ptr;
Run Code Online (Sandbox Code Playgroud)
使用boost :: bind/lambda这似乎使我的代码更易于组合,如果我希望我可以在其中包装一个真正的工厂对象.我可以看到可能会有轻微的性能下降,但这很令人担心,因为它只在启动时调用.
这取决于您的工厂需要多么灵活。如果工厂需要外部信息(例如来自配置文件、程序选项等)来确定如何构造对象,那么对象就有意义。如果您需要的只是工厂的参数,那么函数可能就可以了。
我认为拥有指针的唯一优点是用于测试,您可以在其中使用不同的工厂函数。
归档时间: |
|
查看次数: |
3542 次 |
最近记录: |