标签:style blog color os io 使用 div 代码 log
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。
只有一个实例对于一些类来说很重要。让类负责保存它的唯一实例。这个类保证没有其它实例可以被创建,并且它提供一个访问该实例的方法。这就是Singleton模式。
在下面的情况下可以使用单例模式。
单例模式有许多优点:
在实现时,将构造函数和copying方法设为protected,这样保证单例类不会被用户自己构造与拷贝。
《条款04:确定对象被使用前已先被初始化》:将每个 non-local static 对象搬到自己的专属函数内,该对象在此函数内被声明为 static。这些函数返回一个指向他所含对象的引用,non-local static 对象被 local static 对象替换了。这是单例模式的一个常见实现手法。
因此静态方法Instance()返回一个指向local static对象的指针。而静态对象仅有一个,因此所有通过Instance()得到的指针指向同一个对象。
1 #include <iostream> 2 3 class Singleton { 4 public: 5 static Singleton* Instance(); 6 void message(); 7 protected: 8 Singleton() {}; 9 Singleton(const Singleton&); 10 Singleton& operator=(const Singleton&); 11 }; 12 13 Singleton* Singleton::Instance() { 14 static Singleton _instance; 15 return &_instance; 16 } 17 void Singleton::message() { 18 std::cout << "单例模式" << std::endl; 19 }
测试单例模式
1 #include <iostream> 2 #include "Singleton.h" 3 using namespace std; 4 5 int main() 6 { 7 Singleton* p = Singleton::Instance(); 8 p->message(); 9 Singleton* q = Singleton::Instance(); 10 if (p == q) cout << "确实是单例" << endl; 11 system("pause"); 12 }
测试结果
1 单例模式 2 确实是单例 3 请按任意键继续. . .
标签:style blog color os io 使用 div 代码 log
原文地址:http://www.cnblogs.com/zinthos/p/3951645.html