C++中实现自动注册的工厂

Posted 写了程序换酒钱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中实现自动注册的工厂相关的知识,希望对你有一定的参考价值。

很长时间没有更新博客了,不是博主懒,是因为博主在帮研究生妹子弄硕士论文,定位方面的,被imu,行人航迹,激光匹配各种虐,不说了,都是泪。

Factory模式,在工程中多用了创建派生类实例,内部一般使用switch-case根据不同的key去创建不同的派生类对象。

switch(Key) 
    case A: 
        return new A;
    case B:
        return new B;

    ...

对于继承体系简单的,这种还可以,如果对于一个复杂的体系,比如一个命令系统,最后其有100多个业务命令的类,那难道你还想把switch-case写成和懒婆娘的裹脚布一样,又臭又长,显然是不可以的,今天我们就来实现一个自动注册的工厂。
其实这个设计思路我在很早之前就看过,第一次好像是在cpp博客,第二次是在csdn,最近cpp社区“行知一”又看见了,但是他们那个只是一个demo代码,虽然这里我们只是简单的写写,但是尽量让其可以直接使用。
其实思路很简单,借助于map数据结构,标示类唯一的身份标记作为map的key,而value则是一个lambda表达式,其用来产生类实例。
factory的代码如下:

以上是关于C++中实现自动注册的工厂的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中实现强大的数据持久层?

三步实现自动注册工厂替代switch语句(c++)

三步实现自动注册工厂替代switch语句(c++)

C++ 静态工厂构造函数

C++ 工厂模式 类模板实现

C++ 工厂模式 类模板实现