Singleton模式
Singleton模式
Singleton模式是解决怎么创建唯一对象问题的。
在面向过程的设计语言中,我们能够通过创建全局对象来实现;在面向对象的设计语言中,也能够这样做,可是除此之外还有更好的解决方法:Singleton模式。
Singleton模式十分简单,用一个static成员变量来记录唯一的对象实例。通过static接口来获取此实例。在类外禁用构造函数防止创建类的实例。
以下是Singleton模式的类图结构:
以下通过一个样例来演示。在样例中有一个data,初始化为0。创建一个实例,之后把data改为10,再创建另外一个实例。能够看到新创建的实例中data仍然为10,且构造函数仅仅执行了一次。
//singleton.h
#ifndef _SINGLETON_H
#define _SINGLETON_H
class Singleton
{
protected:
Singleton();
public:
static Singleton* Instance();
int data;
private:
static Singleton* _instance;
};
#endif
//singleton.cpp
#include"singleton.h"
#include<iostream>
Singleton* Singleton::_instance = NULL;
Singleton::Singleton()
{
std::cout << "Singleton Ctor" << std::endl;
data = 0;
}
Singleton* Singleton::Instance()
{
if (_instance == NULL)
_instance = new Singleton();
return _instance;
}
//main.cpp
#include"singleton.h"
#include<iostream>
int main()
{
Singleton* s1 = Singleton::Instance();
std::cout << s1->data << std::endl;
Singleton* s2 = Singleton::Instance();
s1->data = 10;
std::cout << s2->data << std::endl;
return 0;
}