单例模式

单例模式定义

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单例模式特点

① 通常我们可以定义一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。

② 单例模式因为Singleton类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。

单例模式实例应用

单例模式实例应用类图

图 01 单例模式实例应用类图

这里只是列举了最简单的单例模式,复杂一些的需要考虑到多线程的问题。

单例模式实例应用代码

 1 #include "iostream"
 2 using namespace std;
 3 
 4 class CSingleton
 5 {
 6 private:
 7     static CSingleton* instance;
 8     CSingleton()
 9     {
10 
11     }
12 
13 public:
14     static CSingleton* GetInstance()
15     {
16         if(instance == NULL)
17         {
18             instance = new CSingleton(); 
19         }
20         return instance;
21     }
22 };
23 
24 // 类的静态变量需要在外部初始化哦
25 CSingleton* CSingleton::instance = NULL;
26 void main()
27 {
28     CSingleton* s1 = CSingleton::GetInstance();
29     CSingleton* s2 = CSingleton::GetInstance();
30 
31     if(s1 == s2)
32     {
33         cout << "两个对象是相同的实例" << endl;
34     }
35     delete s1;
36     s1 = NULL;
37     delete s2;
38     s2 = NULL;
39 }

2014-12-05   21:55:00

posted on 2014-12-05 21:54  xiaoheike  阅读(193)  评论(0)    收藏  举报

导航