C++对象工厂模式:ObjectFactory学习笔记

  对象工厂,顾名思义,就是产生对象的一个“工厂”。根据传入的一个参数而产生相应的不同种类的对象。

用于批量生成同一个父类的不同子类的对象时用到。

本学习笔记基于Singleton(单件模式)基础上进行扩展。

看《C++单件模式:Singleton学习笔记》请点击链接。

http://xcoder.in/blog/2010/11/singleton-learning.xhtml

-------------------------------------------------------------------------------------------------

对于工厂模式,网上有很多不同的实现方法。我这里是一个HGE的RPG Demo中所用的,这段代码本身写的非常的好,开始好些语句没看懂,虽然就这么几句话。花了一点时间去研究了其代码,并自己重新实现了一遍,加上了通俗易懂的注释。

工厂类以模板形式实现,基于Singleton:

Code:
  1. /**-------------------------------- 
  2.  * 对象工厂模式(Object Factory) 
  3.  * 
  4.  * Code by XadillaX 
  5.  * http://www.xcoder.in 
  6.  * Created at 2010-11-17 1:33 
  7.  */  
  8. #ifndef OBJECTFACTORY_H  
  9. #define OBJECTFACTORY_H  
  10.   
  11. #pragma once  
  12. #include <map>  
  13. #include <string>  
  14. #include "../单件模式/Singleton.h"  
  15.   
  16. template<class T>  
  17. class ObjectFactory : public Singleton<ObjectFactory<T>>  
  18. {  
  19. public:  
  20.     typedef T* (*tCreator)();                               ///< 重定义对象生成函数指针  
  21.     typedef std::map<std::string, tCreator> tCreatorMap;    ///< 对象生成函数指针map  
  22.   
  23.     /** 
  24.      * @brief 注册新“生产车间” 
  25.      * 将生成对象的函数加入对象工厂 
  26.      * 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值