单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include<iostream>
using namespace std;
class Singleton {
public:
static Singleton* GetInstance();
int getVar();
void setVar(int var);
private:
Singleton();
virtual ~Singleton();
static Singleton* instance;
int var;
};
#endif
#include"singleton.h"
Singleton::Singleton() {
this->var=20;
cout<<"singleton constructor...var=20"<<endl;
}
Singleton::~Singleton() {
delete instance;
}
Singleton* Singleton::instance=new Singleton();
Singleton* Singleton::GetInstance() {
return instance;
}
int Singleton::getVar(){
return this->var;
}
void Singleton::setVar(int var) {
this->var = var;
}
#include"singleton.h"
int main(int argc , char **argv) {
Singleton* ton1 = Singleton::GetInstance();
Singleton* ton2 = Singleton::GetInstance();
cout<<"ton1 var="<<ton1->getVar()<<endl;
ton1->setVar(100);
cout<<"ton2 var="<<ton2->getVar()<<" "<<ton1->getVar()<<endl;
ton2->setVar(825);
cout<<"ton1 var="<<ton2->getVar()<<" "<<ton1->getVar()<<endl;
return 0;
}
singleton constructor...var=20
ton1 var=20
ton2 var=100 100
ton1 var=825 825