有一些对象我们只需要一个,比如线程池、缓存、对话框等等,如果制造出多个实例,就会导致许多问题产生。
单件模式利用一个静态变量来记录Singleton类的唯一实例;把构造器声明为私有的,只有自Singleton类内部才可以调用构造器;用getInstance方法实例化对象,并返回这个实例。单件模式确保只有一个实例,并提供一个全局访问点。
#ifndef __SINGLETON_H
#define __SINGLETON_H
#include<iostream>
using namespace std;
class Singleton
{
private:
static Singleton *uniqueInstance;
int num;
private:
Singleton(){}
public:
static Singleton* getInstance()
{
if (uniqueInstance == NULL)
uniqueInstance = new Singleton();
return uniqueInstance;
}
void setNum(int i)
{
num = i;
}
int getNum()
{
return num;
}
};
Singleton* Singleton::uniqueInstance = NULL;
#endif
#include"Sigleton.h"
int main()
{
Singleton *singleton = Singleton::getInstance();
singleton->setNum(10);
cout << singleton->getNum() << endl;
Singleton *singleton2 = Singleton::getInstance();
cout << singleton2->getNum() << endl;
}