对象工厂,顾名思义,就是产生对象的一个“工厂”。根据传入的一个参数而产生相应的不同种类的对象。
用于批量生成同一个父类的不同子类的对象时用到。
本学习笔记基于Singleton(单件模式)基础上进行扩展。
看《C++单件模式:Singleton学习笔记》请点击链接。
http://xcoder.in/blog/2010/11/singleton-learning.xhtml
-------------------------------------------------------------------------------------------------
对于工厂模式,网上有很多不同的实现方法。我这里是一个HGE的RPG Demo中所用的,这段代码本身写的非常的好,开始好些语句没看懂,虽然就这么几句话。花了一点时间去研究了其代码,并自己重新实现了一遍,加上了通俗易懂的注释。
工厂类以模板形式实现,基于Singleton:
- /**--------------------------------
- * 对象工厂模式(Object Factory)
- *
- * Code by XadillaX
- * http://www.xcoder.in
- * Created at 2010-11-17 1:33
- */
- #ifndef OBJECTFACTORY_H
- #define OBJECTFACTORY_H
- #pragma once
- #include <map>
- #include <string>
- #include "../单件模式/Singleton.h"
- template<class T>
- class ObjectFactory : public Singleton<ObjectFactory<T>>
- {
- public:
- typedef T* (*tCreator)(); ///< 重定义对象生成函数指针
- typedef std::map<std::string, tCreator> tCreatorMap; ///< 对象生成函数指针map
- /**
- * @brief 注册新“生产车间”
- * 将生成对象的函数加入对象工厂
- *