单例模式
应用场景:
1、资源管理,如日志、线程池
2、部分功能逻辑类,只是为了处理特定业务。
作用:
保证一个类只有一个对象,并提供一个全局访问点,使得系统只有唯一一个对象实例
实现方法:
1.创建实例需用到构造函数,为保证只有一个实例,应显示声明构造函数为私有类型
2.同理,为了防止拷贝,复制构造函数也需要设置为私有
3.提供一个全局访问点,如静态成员函数,静态成员函数中创建一个局部类的静态对象实例返回。
class SingleClass
{
public:
static GetInstance(){
static SingleClass singleContext;
return singleContext;
}
private:
SingleClass(){} //明确禁止访问
virtual ~SingleClass();
SingleClass (SingleClass const &singleCpy);//明确禁止访问
SingleClass &operator=(SingleClass const &singleCpy); //明确禁止访问
};
#define g_singleclass SingleClass::GetInstance()