c – 工厂对象与工厂功能

我有一个带有几个派生类的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;
};

在函数指针上使用它有什么好处:

boost::function<base* ()> factory_ptr;

使用boost :: bind / lambda这似乎使我的代码更易于组合,如果我希望我可以在其中包装一个真正的工厂对象.我可以看到可能会有轻微的性能下降,但这很令人担心,因为它只在启动时调用.

最佳答案
这取决于您的工厂需要的灵活性.如果工厂需要外部信息(比如从配置文件,程序选项等)来确定如何构造对象,那么对象是有意义的.如果所有你需要的是在工厂的参数中,那么函数可能就好了.

我可以看到有一个指针的唯一优势是测试,你可以使用不同的工厂函数.

转载注明原文:c – 工厂对象与工厂功能 - 代码日志