一、功能(什么是单例模式)
单例模式有两个主要功能,一是保证此类只能有一个实例,二是提供全局访问点。
二、为什么需要单例模式
某些系统中,有的类只能有一个实例,比如一个学校只能有一个校长,并且希望这个校长可以任何时候任何地点被同学老师联系到。
三、代码
class Singleton
{
public:
static Singleton* Instance();
protected:
Singleton(){};
private:
static Singleton* _instance;
};
Singleton* Singleton::_instance = 0;
Singleton* Singleton::Instance()
{
if(_instance == 0)
{
_instance = new Singleton;
}
return _instance;
}
Singleton的构造函数声明为protected,这样既可以保证外面不能实例化Singleton,又可以让Singleton的子类可以被实例化。
参考:
1. 《设计模式——可复用面向对象软件的基础》