工厂模板-游戏开发

来源:互联网 发布:淘宝安全证书 编辑:程序博客网 时间:2024/06/06 13:16

这是第二次来写博客,本着严谨的态度,这次的主题是工厂模式。工厂模式负责着大型项目成千上百的对象的统一实例化,这样的好处,统一管理,清晰明了。当你的需求发生改变的时候仅仅需要修改负责生产的工厂,而不需要修改客户对工厂的调用代码。由于网上的工厂模式很多,所以今天要写的是一个可以通用的工厂模板,如下:

#ifndef _FACTORY_H#define _FACTORY_H#include <map>// define the constructor method, change as your requesttemplate<typename TBaseClass, typename TClass> TBaseClass* createClassType(){return new TClass;}// define factorytemplate<typename TKey, typename TBaseClass> class Factory{private:typedef TBaseClass* ( *Constructor )();typedef std::map< TKey, Constructor >ContructorMap;public://---------------------registe class to factory--------------------template<typename TClass> void registerClass( TKey identifier ){Constructor tContructor= &createClassType< TBaseClass, TClass >;mRegistedClassConstructorList.insert( std::make_pair( identifier , tConstructor ) );}//-------------------create instance according identifier-----------TBaseClass*createInstance( TKey identifier ){Constructor tConstructor= mRegistedClassConstructorList[identifier];if ( tConstructor != NULL ){return tConstructor();}return NULL;}//------------------------------------------------------------------private:ContructorMapmRegistedClassConstructorList;}#endif //_FACTORY_H

将以后需要生产的零件类型(TClass)事先注册到工厂的厂房(map)里,就可以随时生产出需要的零件实例, 确保你生产的各种零件是TBaseClass的派生类就可以了

0 0
原创粉丝点击