我所理解的設計模式(C++實現)——單例模式(Singleton Pattern)
單例模式,顧名思義,就是隻能由一個例項,那麼我們就必須保證
- 該類不能被複制。
- 該類不能被公開的創造。
那麼對於C++來說,他的建構函式,拷貝建構函式和他的賦值函式都不能被公開呼叫。
但對於該私有的建構函式的構造時機上來說也可以分兩種情況來構造:
- 只有當需要改類的時候去構造(即為懶漢模式)
- 在程式開始之前我就先構造好,你到時候直接用就可(即為餓漢模式)
那麼我分別來說說這兩種模式:
- 懶漢模式,靜態區域性變數只會被初始化一次即第一次執行的時候,其生命週期與程式的生命週期是相同的。這個同樣適用於多執行緒的情況。
class single1 { public: static single1& getInstance() { static single1 instance; return instance; } int helloSingle() {return 1;} private: private: single1(){}; single1(const single1&); single1& operator=(const single1&); };
- 餓漢模式,但是在main函式外面必須先呼叫其例項的構造,這個是靜態例項的初始化,C/C++會保證其在進入main函式之前進行。
class single2 { public: static single2* getInstance() { return mInstance; } int helloSingle() {return 1;} private: static single2* mInstance; private: single2(){}; single2(const single2&); single2& operator=(const single2&); }; single2* single2::mInstance = new single2;
我們運用靜態區域性變數和靜態例項的特性,使得我們的這兩種模式都適用於多執行緒。
LCL_data 原創於CSDN.NET[http://blog.csdn.net/lcl_data/article/details/8709701]
相關文章
- 我所理解的設計模式(C++實現)——原型模式(Prototype Pattern)設計模式C++原型
- 我所理解的設計模式(C++實現)——建造者模式(Builder Pattern)設計模式C++UI
- 我所理解的設計模式(C++實現)——橋模式(Bridge Pattern)設計模式C++
- 我所理解的設計模式(C++實現)——簡單工廠模式(Simple Factory Pattern)設計模式C++
- 我所理解的設計模式(C++實現)——組合模式(Composite Pattern)設計模式C++
- 設計模式--單例(Singleton Pattern)設計模式單例
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- Java設計模式——單例模式(Singleton pattern)Java設計模式單例
- 我所理解的設計模式(C++實現)——介面卡模式(Adapter Pattern)設計模式C++APT
- 我所理解的設計模式(C++實現)——抽象工廠模式(Abstract Factory Pattern)設計模式C++抽象
- 我所理解的設計模式(C++實現)——工廠方法模式(Factory Method Pattern)設計模式C++
- PHP設計模式(一)—單例模式(Singleton Pattern)PHP設計模式單例
- Java設計模式之單例模式(Singleton Pattern)Java設計模式單例
- JAVA設計模式之 單例模式【Singleton Pattern】Java設計模式單例
- 單例模式(Singleton Pattern)單例模式
- 深入理解 JavaScript 單例模式 (Singleton Pattern)JavaScript單例模式
- 設計模式—singleton(單例模式)設計模式單例
- 設計模式 - 單例模式(Singleton)設計模式單例
- 設計模式——單例模式C++實現設計模式單例C++
- java設計模式-單例模式SingletonJava設計模式單例
- 設計模式之單例模式 - Singleton設計模式單例
- 設計模式——3單例模式(Singleton)設計模式單例
- Singleton 單例設計模式單例設計模式
- 單態設計模式(Singleton Design Pattern)設計模式
- 設計模式之——Singleton pattern設計模式
- 使用C# (.NET Core) 實現單體設計模式 (Singleton Pattern)C#設計模式
- PHP設計模式(四)單例模式(Singleton)PHP設計模式單例
- 《設計模式》 - 1. 單例模式( Singleton )設計模式單例
- Java設計模式之單例模式(Singleton)Java設計模式單例
- 設計模式系列之單例模式(Singleton Pattern)——確保物件的唯一性設計模式單例物件
- 設計模式的征途—1.單例(Singleton)模式設計模式單例
- Scala 與設計模式(一):Singleton 單例模式設計模式單例
- C++用多種方式實現Singleton單例模式C++單例模式
- 建立型模式 --- 單件模式(Singleton Pattern)模式
- 設計模式 - 單例模式Singleton的8種寫法設計模式單例
- C++設計模式——單例模式C++設計模式單例
- 設計模式-Java實現單例模式設計模式Java單例
- 設計模式之“物件效能模式”: Singleton 單例模式(筆記)設計模式物件單例筆記