目录
- 前言
- 饿汉式
- 懒汉式
- 懒汉式DCLP
- 局部静态式(Meyers' Singleton)
- 单例模板
- 参考文章
前言
单例模式,其核心目标是确保在程序运行的过程中,有且只有存在一个实例才能保证他们的逻辑正确性以及良好的效率。因此单例模式的实现思路就是确保一个类有且只有一个实例,并提供一个该实例的全局访问点。
单例模式设计要点:
- 私有构造、析构
- 禁止赋值、拷贝
- 静态私有成员:全局唯一实例
- 提供一个用于获取全局唯一实例的接口,若实例不存在则创建。
除了上面提到的四点还要注意线程安全以及资源释放的问题。
本文从最基本的懒汉式和饿汉式单例模式开始,循序渐进地讨论单例模式形式的特点及变化过程
饿汉式
饿汉式单例模式的核心思路就是不管需不需要用到实例都要去创建实例。饿汉模式的实例在类产生时候就创建了,它的生存周期和程序一样长。
对于饿汉模式而言,是线程安全的,因为在线程创建之前唯一的实例已经被创建好了。而且在程序的退出阶段,类内唯一实例instance也会被销毁,~CSingleton会被调用,资源可以正常被释放。
[code]//无延迟初始化//多线程安全,资源自动释放class CSingleton{public: static CSingleton* getInstance();private: CSingleton(){std::cout |