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 類。