C++单件模版类
我们在工作中往往会用到单件类。但是我们知道单件类的实现就那么几步,如果系统中有多个单件类的话,去一个个写非常麻烦,那么怎么办呢?
单件模版类就派上用场了:
//// 编译器自动加上的前向声明.//class CDataMgr;//// 用 CDataMgr 实例化的单件基类.//class Singleton<CDataMgr>{public:// ...static CDataMgr& GetInstance(){// ...return *m_psInstance;}private:static CDataMgr*m_psInstance;};CDataMgr* Singleton<CDataMgr>::m_psInstance = 0;//// 编译器处理后的类 CDataMgr.//class CDataMgr : public Singleton<CDataMgr>{public:// ...void SaveData();};
这样一来,整个过程就非常容易理解了,这个模版使用起来非常方便。如果非常复杂的系统,还可以加上单件的管理,比如单件类初始化顺序管理、单件类释放顺序管理等等。