码迷,mamicode.com
首页 > 其他好文 > 详细

Singleton模式

时间:2019-06-06 15:32:40      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:纯粹   遇到   全局变量   解决   解释   col   protected   面向过程   ret   

  Singleton模式解决问题十分常见,我们怎样去创建一个唯一的变量(对象)?在基于对象的设计中我们可以通过创建一个全局变量(对象)来实现,在面向对象和面向过程结合的设计范式(如C++中)中,我们也还是可以通过一个全局变量实现这一点。但是当我们遇到了纯粹的面向对象范式中,这一点可能就只能是通过Singleton模式来实现了

技术图片

Singleton.h

 1 #ifndef _SINGLETON_H_
 2 #define _SINGLETON_H_
 3 
 4 #include <iostream>
 5 
 6 using namespace std;
 7 
 8 class Singleton
 9 {
10 public:
11     static Singleton *Instance();
12 
13 protected:
14     Singleton();
15 private:
16     static Singleton *_instance;
17 };
18 
19 #endif // !_SINGLETON_H_

Singleton.cpp

 1 #include <iostream>
 2 #include "Singleton.h"
 3 
 4 using namespace std;
 5 
 6 Singleton *Singleton::_instance=0;
 7 
 8 Singleton::Singleton()
 9 {
10     cout << "Singleton..." << endl; 
11 }
12 
13 Singleton* Singleton::Instance() 
14 { 
15     if (_instance == 0) 
16     {
17         _instance = new Singleton();
18     }
19     return _instance; 
20 }

main.cpp

#include "Singleton.h"
#include <iostream> 
using namespace std; 
int main(int argc,char* argv[]) 
{
    Singleton* sgn = Singleton::Instance();
    return 0;
}

代码说明
  Singleton模式的实现无须补充解释,需要说明的是,Singleton不可以被实例化,因此我们将其构造函数声明为protected或者直接声明为private。 

 

 

Singleton模式

标签:纯粹   遇到   全局变量   解决   解释   col   protected   面向过程   ret   

原文地址:https://www.cnblogs.com/Malphite/p/10985123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!