一、定义:确保一个类只有一个实例,并提供一个全局访问点。
理解:
(1)、把某个类设计成自己管理的一个单独实例,同时避免其他类再自行产生实例。
(2)、全局访问点:当需要实例时,向类查询,它会返回某个实例。(判断它是否存在,如果不存在,用私有构造创建一个实例,并且返回它,这就是延迟实例化。)
二、全局变量与单例模式的比较
(1)、全局变量虽然能够实现全局访问的功能,但是它不能确保在应用程序中的一个类只有一个实例。并且在代码规范中,也明确指出应该尽量少用全局变量,因为过多的使用全局变量会造成代码难读;
(2)、全局变量不能实现继承(虽然单例模式在继承上不能很好的处理,但是还是可以实现继承的)
三、单例模式代码(C++)
#include<iostream>
using namespace std;
class Singleton
{
private :
Singleton() {}
static Singleton *uniqueInstance;
public :
static Singleton *getInstance()
{
if(uniqueInstance == NULL)
{
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
};
int main()
{
Singleton *s = Singleton::getInstance();
Singleton *s1 = s->getInstance();
return 0;
}