保证一个类只能有一个实例,并提供一个访问它的负局访问点。
Singleton模式的工作方式是:拥有一个特定的方法,这个方法被手于实例化需要的对象。
* 当这个方法被调用时,它检查了这个对象是否已经被 实例化。如果对象已经被实例化,这个方法仅仅返回这个对象的一个引用。如果对象尚未实例化,这个方法交对象实例化返回这个新的实例的引用。
*为了确保这是创建这个类型的对象的惟一途径,一般都是当构造函数定义为protected 或 private.
网上的代码:
#include<iostream> using namespace std; class Singleton { public: static Singleton * GetInstance()//通过静态公有函数获得该类的实例对象 { if(m_pInstance==NULL) m_pInstance=new Singleton(); return m_pInstance; } private: Singleton(){}//构造函数私有化的目的是为了防止从别处实例化该类对象 static Singleton * m_pInstance; class Garbo//删除Singleton实例的对象 { public: ~Garbo() { if(Singleton::m_pInstance) { delete Singleton::m_pInstance; } } }; static Garbo gb;//在程序结束时,系统会调用它的析构函数 }; Singleton * Singleton::m_pInstance=NULL;//初始化静态数据成员 int main() { Singleton *sl=Singleton::GetInstance(); return 0; }