gpt4 book ai didi

c++ - 工厂模式,实现一个动态的工厂列表

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:36 24 4
gpt4 key购买 nike

我正在实现一个抽象工厂模式(在 C++ 中),但是有一个小问题。

我想避免创建一个必须在编译时知道存在哪些工厂的地方。

通常在例子中我会看到这样的东西。

Factory * getFactory()
{
if(/*we should make factoryA*/)
{
return FactoryA::instance();
}
else if(/*we should return FactoryB*/)
{
return FactoryB::instance();
}
else
{
return NULL;
}
}

我可以做这样的事情,但我想要更好的!

我的想法是 Factory 基类会有一个 Factories 列表,每个从 Factory 继承的类都会创建一个静态实例并通过一个 protected 类将该实例添加到列表中在 Factory 中运行。

但是,如果不玩带有静态对象初始化的俄罗斯轮盘赌,我想不出一种方法来做到这一点。

最佳答案

为避免静态初始化顺序出现问题,您可以使列表成为函数 getFactoryList() 的静态成员。当 protected 构造函数需要向列表中添加工厂时,这将确保列表存在。

然后您需要向 Factory 添加一个虚拟方法以确定是否应使用给定的工厂。希望一次只有一个工厂有资格使用,这样工厂创建的顺序不会改变返回哪个工厂。

关于c++ - 工厂模式,实现一个动态的工厂列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com