一般是用一个map
unordered_map<string, function<unique_ptr<Base>()>
每个类在定义之后进行一次register
如果是动态加载的,则在加载时register
【 在 xiaofeiyun (xiaofeiyun) 的大作中提到: 】
: 标 题: Re: C++怎么实现动态工厂模式?没有类似Java的反射机制
: 发信站: 水木社区 (Mon Oct 19 12:49:16 2020), 站内
:
:
:
: 类工厂写成下面这样,缺点如下:
: 1.会依赖于具体类的头文件、lib库;
: 2.以后添加新的具体类,还得修改类工厂,包含新类的头文件、lib库
: Object* FactoryCreat(const string& className)
: {
: if (className == "ClassA")
: return new ClassA;
: else if (className == "ClassB")
: return new ClassB;
: else if(className == "ClassC")
: return new ClassC;
: else if(className == "ClassD")
: return new ClassD;
: else if(className == "ClassE")
: return new ClassE;
: ...
:
:
:
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 124.193.98.*]
--
FROM 76.126.252.*