版权声明:转载请注明出处. https://blog.csdn.net/laodaliubei/article/details/84705277
Contents
Singleton 单例
- In math , singleton means “有且只有一个元素的集合.”
- 单例模式: “保证一个类仅有一个实例,并提供一个访问它的全局访问点。”
- Purpose: for some classes in the syste , it’s necessary to have only one instance. E.g.: 一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;在Windows中就只能打开一个任务管理器。一个程序只有一个和数据库的连接,只有一个鼠标的object
- How:单例模式的要点有三个:
- 某个类只能有一个实例;
- 它必须自行创建这个实例;
- 它必须自行向整个系统提供这个实例。
从具体实现角度来说,就是以下三点:
- 单例模式的类只提供私有 的构造函数
- 类定义中含有一个该类的静态 私有对象
- 该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象 <Effective c++ P31> .
- Hence, only in class{…} can call it ; the instance out of class{} (definition block) can only access public.
%Implementation: use pointer or reference.%- Static member function: 本类所有成员变量共享, similar to “类变量 ” in java/python.
- Constructed when really used(called) -->@可以避免耗时的全局变量初始化所导致的启动速度不佳等问题@
Destructor of singleton:
for “delete” will call destrucor recursively, you can use “static void Release(){if(_s) delete(_s),_s=null} ”, or a destroyer 类。