一说到设计模式,大家一定会想到单例模式。当然,单例模式也有很多的版本哦
最大众的版本
class Singleton
{
public:
static Singleton *pstr;
static Singleton* Get()
{
if(pstr == NULL)
{
pstr = new Singleton();
}
return pstr;
}
private:
Singleton();
}
Singleton *Singleton::pstr = NULL;
当然,这个模式不是线程安全的,那我们就写一个线程安全的单例模式
class Singleton
{
public:
static Singleton *pstr;
static Singleton* Get()
{
return pstr;
}
private:
Singleton();
}
Singleton *Singleton::pstr = new Singleton();
又有同学会说,这样对象只能在堆上创建啊,并且存在对象过早创建的现象,浪费内存,那好,我们来写一个最终版的单例模式
class Singleton
{
public:
static Singleton* Get()
{
static Singleton singleton;
return &singleton;
}
private:
Singleton();
}
充分利用了static关键字具有记忆性的特性。