C++类工厂的原理和实现

类工厂在设计模式中,有很大的影响,在实际应用中,依然有很高的价值。但是,在C++中,实际上,没有类的描述信息。比如说,你不能通过指定字符串HelloWorld,来自动生成一个HelloWorld类的实例。但在技术,依然提供类似这种可能。

我们假设这样的一个场景,我在类工厂里面指定一系列类的定义,并为这些类指定对应的名字,比如“HelloWorld”对应于HelloWorld类,而"HelloWorld1"对应于HelloWorld1类。那么,当我需要HelloWorld的时候,我只要指定"HelloWorld"字符串,就会生成对应类的实例。

一个简单的实现可以是这样的:

 

这个实现实在太简单了,不过至少成功满足这个需求,同时也指示出一个原理。我们后面继续基于这个例子继续深化。

 

然后,我们提出一个需求,希望我定义HelloWorld类,他就能自动帮我添加到类工厂里,否则,用起来实在麻烦了。

这个需求又提出第二个问题,自动向类工厂注册的问题。幸好,C++提供一个很好的特性,就是自动初始化功能。当你定义类,然后声明类的实例后,这个实例会自动在被初始化,这个初始化只会出现类,而不会是结构或者基础类型,比如int。好了,我们就利用这个特性。

 

 

很抱歉的是,这段代码没有经过测试,但原理都包含这里面。类似的代码已经应用生产环境中,因此可行性不需要质疑。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值