Singleton模式
一、要解决的问题:
怎样创建一个唯一的变量(对象)?
二、解决:
通过维护一个static的成员变量来记录这个唯一的对象实例,通过提供一个static的接口来获得这个唯一的实例。
三、C++实例:
//singleton.h
#ifndef SINGLETON_H
#define SINGLETON_H
class Singleton{
public:
virtual ~Singleton();
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* m_instance;
const static int m_int = 0;
};
#endif // SINGLETON_H
//singleton.cpp
#include "singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::m_instance = 0; //使用前必须赋值
Singleton::Singleton(){
cout << "Singleton..." << endl;
}
Singleton* Singleton::Instance(){
if(m_int == 0){
m_instance = new Singleton();
}
return m_instance;
}
Singleton::~Singleton(){
delete m_instance;
}
//main.cpp
#include "singleton.h"
#include <iostream>
using namespace std;
int main()
{
Singleton* singleton = Singleton::Instance();
return 0;
}
四、说明:
Singleton模式常和Factory(AbstractFactory)模式一起使用,因为系统中工厂对象一般来说只需一个。