- **设计模式:**就像打仗时的战法被归结为兵法书一样,代码的设计也可被归类为多种模式。
- **单例模式:**一个类中只创建一个实例化的对象,并提供一个访问它的全局访问点,该实例被所有程序模块共享。
饿汉模式:不管你用不用,程序启动时就创建一个对象。
例如:
{
public:
static Singleton* GetInstance()
{
return &m_instance;
}
private:
// 构造函数私有
Singleton(){};
// C++98 防拷贝
Singleton(Singleton const&);
Singleton& operator=(Singleton const&);
// or
// C++11
Singleton(Singleton const&) = delete;
Singleton& operator=(Singleton const&) = delete;
static Singleton m_instance;
};
Singleton Singleton::m_instance; // 在程序入口之前就完成单例对象的初始化
(1)需要进行的步骤:
- 通过私有化构造函数和拷贝构造函数来防止程序中出现其他该类的实例化对象;
- 在类内声明一个static类型的成员变量x;
- 提供一个公共接口在堆上创建对象;
- 类外定义static的成员变量x。
(2)饿汉模式的优缺点及应用场景:
- 优点:简单。
- 缺点:可能会导致进程启动