单件模式确保一个类只有一个实例,并提供一个全局访问点
class service
{
private:
service();
public:
static service* getInstance();
~service();
private:
static service* instance_;
}
service* service::instance_ = 0;
service* service::getInstance()
{
if ( !instance_ )
instance_ = new service();
return instance_;
}
service::service()
{
......
}
- 将构造函数设为私有,无法直接创建对象
- 开放唯一创建对象接口,getInstance
- 通过static变量,控制实例
在多线程情况下,有可能会导致实例化的重复,因为getInstance并有没有加锁,解决方法就是同步调用函数,或者在函数里加上互斥