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++中实现自动注册的工厂的主要内容,如果未能解决你的问题,请参考以下文章