单例模式 ==》 生成一个对象
1.屏蔽生成对象的接口
2.类中提供一个公有接口 生成唯一对象
线程不安全
#include <iostream>
class SingleTon
{
public:
static SingleTon* getInstance()
{
if(psingle==NULL)
{
psingle=new SingleTon();
}
return psingle;
}
private:
SingleTon(const SingleTon&);
SingleTon(){}
static SingleTon* psingle;
};
SingleTon* SingleTon::psingle=NULL;
int main()
{
SingleTon* p1=SingleTon::getInstance();
SingleTon* p2=SingleTon::getInstance();
SingleTon* p3=SingleTon::getInstance();
return 0;
}
加锁,线程安全但是效率低
线程安全且有效率
#include <iostream>
class SingleTon
{
public:
static SingleTon* getInstance()
{
//lock();
if(psingle==NULL)
{
if(psingle==NULL)
{
psingle=new SingleTon();
}
}
//unlock();
return psingle;
}
private:
SingleTon(const SingleTon&);
SingleTon(){}
static SingleTon* psingle;
};
SingleTon* SingleTon::psingle=NULL;
int main()
{
SingleTon* p1=SingleTon::getInstance();
SingleTon* p2=SingleTon::getInstance();
SingleTon* p3=SingleTon::getInstance();
return 0;
}