Singleton,顾名思义,从字面上来理解就是单例模式,这是C++程序中
常用到的一种设计模式,特别是像文件管理器,纹理管理器这种整个软件
中只需要唯一的实例来管理所有资源时,这种模式的价值便得以体现。
下面来介绍两种用于派生管理的Singleton模式:
其中,第一种是Gof版本的Singleton, 其代码如下:
//【Singleton_Gof.h】
#pragma once
template<typename T>
class Singleton_Gof
{
protected:
static T* ms_Singleton;
Singleton_Gof(){assert(!ms_Singleton);}
~Singleton_Gof(){assert(ms_Singleton);ms_Singleton=NULL;}
private:
Singleton_Gof(const Singleton_Gof&); //防止构造函数的复制
Singleton_Gof& operator=(const Singleton_Gof&);
public:
static T* getSingletonPtr(){if (!ms_Singleton)ms_Singleton = new T();return ms_Singleton;}
static T& getSingleton(){if (!ms_Singleton)ms_Singleton = new T();return (*ms_Singlet