Singleton 类写法

来源:互联网 发布:日语口语网络课程 编辑:程序博客网 时间:2024/06/05 18:02

转载自:http://www.cppblog.com/ElliottZC/archive/2007/07/20/28420.html

sharedInstance() 静态成员函数提供类操作的全局访问点。
静态成员变量 _instance 用于保存一个指向它的唯一实例的指针。

Singleton 类定义如下:
class Singleton {private:       static  Singleton*  _instance;protected:       Singleton();public:       static  Singleton*  sharedInstance();};
实现如下:
Singleton*  Singleton::_instance = 0;Singleton*  Singleton::sharedInstance() {       if (_instance == 0) {              _instance = new Singleton();       }       return _instance;}
客户仅通过 Singleton::sharedInstance() 函数访问这个单件。
变量 _instance 初始化为 0,而静态成员函数 sharedInstance() 返回该变量值,如果其值为0,则用唯一实例初始化它。
_instance 使用惰性(Lazy)初始化;它的返回值直到第一次访问时才被创建和保存。
另外,注意 Singleton 类的构造函数是保护型的(protected),试图直接实例化 Singleton 类的客户将得到一个编译时的错误信息。
这就保证了仅有一个实例可以被创建。