Singleton Constructor
ton1 var = 20
ton2 var = 150 当我们要让一个类产生同一个对象对客户端服务的时候,比如管理数据库连接,管理文件IO等,这时我们就要使用到单例模式。下面是该模式的C++实现(注泽说明)
#include
using namespace std;
//单例类的C++实现
class Singleton
{
private:
Singleton();//构造方法私有
virtual ~Singleton();
static Singleton * instance;//惟一实例
int var;//成员变量(用于测试)
public:
static Singleton * GetInstance();//工厂方法(用来获得实例)
int getVar();//获得var的值
void setVar(int);//设置var的值
};
//构造方法实现
Singleton::Singleton()
{
this->var=20;
cout<<"Singleton Constructor"<}
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;
}
int main(int argc,char * argv[])
{
Singleton *ton1 = Singleton::GetInstance();
Singleton *ton2 = Singleton::GetInstance();
cout<<"ton1 var ="<getVar()< ton1->setVar(150);
cout<<"ton2 var = "<getVar()< return 0;
}
输出如下:
Singleton Constructor
ton1 var = 20
ton2 var = 150
在输出结果中我们可以看到,构造方法只调用了一次,ton1与ton2是指向同一个对象的。
另外:
1、如果单例模式想用多个实例的话可以在类内实现:比如想用两个实例就写两个单例 比如
GetAInstance()
GetBInstance()
2、如果是在多线程了得加锁。
阅读(1174) | 评论(0) | 转发(0) |