一、功能
保证一个类仅有一个实例。
二、示例代码
class Singleton { public: static Singleton* Instance() ; protected: Singleton() {} private: static Singleton *_instance ; Singleton(const Singleton&) ; Singleton& operator=(const Singleton&) ; } ; Singleton* Singleton::_instance = NULL ; Singleton* Singleton::Instance() { (_instance == NULL) ? _instance = new Singleton() : 0 ; //lazy initialization return _instance ; }
客户端代码: { using namespace DesignPattern_Singleton ; Singleton *p = Singleton::Instance() ; ...... }
三、简要分析:
在Singleton类中声明构造函数为private,使外部类不能直接创建该类对象,外部类只能通过public的Instance()接口获取该类对象,并且保证了只构造了一个对象供外部使用。