单例模式:
该类只生成一个对象,该类返回一个引用或指针(永远是指向唯一的对象),定义一个静态的方法来得到该类的唯一对象。
(屏蔽构造函数,类中提供一个接口生成对象,不能依赖对象调用,不能返回类类型。)
第一种,懒汉模式 /延时加载。对象存放在堆区,运行时生成对象(注意线程安全问题)
class SingleTon
{
public:
static SingleTon* getInstance()
{
if (psingle == NULL)
{
//lock();
if (psingle == NULL)//双重检测,避免进程锁资源浪费
{
psingle = new SingleTon();
}
//unlock();
}
return psingle;
}
private:
SingleTon(){}
SingleTon(const SingleTon&);
static SingleTon* psingle;
};
SingleTon* SingleTon::psingle = NULL;
第二种,饿汉模式 /贪婪加载。 对象存放在静态区,初始化时生成
class SingleTon
{
public:
static SingleTon* getInstance()
{
return single;
}
private:
SingleTon(){}
SingleTon(const SingleTon& ){}
static SingleTon* single;
};
SingleTon SingleTon:: single = new SingleTon();