转载自: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 类的客户将得到一个编译时的错误信息。
这就保证了仅有一个实例可以被创建。