Singleton模式

Posted malphite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Singleton模式相关的知识,希望对你有一定的参考价值。

  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模式的主要内容,如果未能解决你的问题,请参考以下文章

Singleton Pattern (单例模式)

图解设计模式-Singleton模式

浅谈JAVA设计模式之——单例模式(Singleton)

05-单例(Singleton)模式Ruby实现

特效设计也需要设计模式—— 单例模式(Singleton)Java

剑指Offer对答如流系列 - 实现Singleton模式