单例模式
单例模式:一个类只生成一个对象
- 将类中的构造函数与拷贝构造函数屏蔽起来
- 在类中提供一个接口生成唯一的对象(不能返回类类型,不能依赖对象调用)
基本实现思路
- 单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法)。
- 单例的实现主要是通过以下两个步骤:
- 将该类的构造方法定义为私有方法,这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例;
- 在该类内提供一个静态方法,当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用。
class Singleton
{
public:
static Singleton *Instance();
protected:
Singleton();
private:
static Singleton *_instance;
};
Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout << "Singleton...." << endl;
}
Singleton* Singleton::Instance()
{
if (_instance == 0)
{
_instance = new Singleton();
}
return _instance;
}
int main(int argc, char* argv[])
{
Singleton* sgn = Singleton::Instance();
return 0;
}