单例模式
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
最常见的使用方法:
class CSingleton
{
private:
CSingleton() //构造函数是私有的
{
}
public:
static CSingleton * GetInstance()
{
static CSingleton *m_pInstance;
if(m_pInstance == NULL) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
};
显而易见,构造函数私有化。
提供一个public 可以获取这个实例,也是唯一一个实例。
注意点:
1. 单例模式和它的名字一样,只有一个实例,独一无二。
2. 它是自行创建自己的实例,而不是 在其他类中new出来的。
3. 它提供public接口,供其他对象使用。
常用的方向:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。
最常见的一个出错地方:
解决这个问题,网上最常见的方式是,一种加锁,一种是在启程序的时候就初始化此实例。
没有实践过,不做过多叙述。