单例模式:
- 一个类只允许创建唯一的对象
- 禁止在类的外部创建对象:私有化构造函数:private或protected
- 类的内部维护唯一对象:静态成员变量
- 提供访问单例对象的方法:静态成员函数,返回在类内部唯一构造的实例
创建方式
- 饿汉式:单例对象无论用或不用,程序启动即创建。
- 懒汉式:单例对象在用的时候再创建,不用即销毁。
class singleton //实现单例模式的类
{
private:
singleton(){} //私有的构造函数
static singleton* Instance;
public:
static singleton* GetInstance()
{
if (Instance == NULL) //判断是否第一调用
Instance = new singleton();
return Instance;
}
};
class singleton //实现单例模式的类
{
private:
singleton(){} //私有的构造函数
volatile static singleton* Instance;
public:
static singleton* GetInstance()
{
if (Instance == NULL) //判断是否第一调用
{
Lock(); //表示上锁的函数
if (Instance == NULL)
{
Instance = new singleton();
}
UnLock() //解锁函数
}
return Instance;
}
};
class singleton //实现单例模式的类
{
private:
singleton() {} //私有的构造函数
public:
static singleton* GetInstance()
{
static singleton Instance;
return &Instance;
}
};
1.互斥锁保证安全
2.双重if判断提高代码效率
3.volatile关键字防止编译器过度优化