我正在实现一个抽象工厂模式(在C++中),但有一个小问题。工厂模式,实现工厂动态列表
我想避免创建一个必须在编译时知道工厂存在的地方。
通常在例子中我看到类似这样的东西。
Factory * getFactory()
{
if(/*we should make factoryA*/)
{
return FactoryA::instance();
}
else if(/*we should return FactoryB*/)
{
return FactoryB::instance();
}
else
{
return NULL;
}
}
我可以做这样的事情,但我想要更好!
我心目中的是,工厂的基类将有工厂的名单,从继承厂将创建一个静态实例,该实例中添加到列表中,通过一个受保护类的函数厂每个班。
但是,我不能找出一种方法来做到这一点,而不用玩俄罗斯轮盘与静态对象初始化。
什么是你想实现什么?你如何决定应该退回哪个工厂?为什么你想要一个清单,你会如何将正确的工厂拉出清单? – 2011-05-04 13:12:02
FactoryA :: instance()返回什么?它是否返回工厂实例?它是否返回新A的实例?我第一眼看你的代码让我觉得这个函数正在返回工厂。如果是这种情况,你的方法可能是错误的。 – 2011-05-04 13:21:36
@dauphic:这是比较标准的模式。你有一堆工厂对象,你需要在运行时动态决定使用哪些对象。 – 2011-05-04 14:18:13