类工厂在设计模式中,有很大的影响,在实际应用中,依然有很高的价值。但是,在C++中,实际上,没有类的描述信息。比如说,你不能通过指定字符串HelloWorld,来自动生成一个HelloWorld类的实例。但在技术,依然提供类似这种可能。
我们假设这样的一个场景,我在类工厂里面指定一系列类的定义,并为这些类指定对应的名字,比如“HelloWorld”对应于HelloWorld类,而"HelloWorld1"对应于HelloWorld1类。那么,当我需要HelloWorld的时候,我只要指定"HelloWorld"字符串,就会生成对应类的实例。
一个简单的实现可以是这样的:
这个实现实在太简单了,不过至少成功满足这个需求,同时也指示出一个原理。我们后面继续基于这个例子继续深化。
然后,我们提出一个需求,希望我定义HelloWorld类,他就能自动帮我添加到类工厂里,否则,用起来实在麻烦了。
这个需求又提出第二个问题,自动向类工厂注册的问题。幸好,C++提供一个很好的特性,就是自动初始化功能。当你定义类,然后声明类的实例后,这个实例会自动在被初始化,这个初始化只会出现类,而不会是结构或者基础类型,比如int。好了,我们就利用这个特性。
很抱歉的是,这段代码没有经过测试,但原理都包含这里面。类似的代码已经应用生产环境中,因此可行性不需要质疑。