我所理解的設計模式(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]
相關文章
- 設計模式--單例(Singleton Pattern)設計模式單例
- 常用設計模式-單例模式(Singleton pattern)設計模式單例
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- PHP設計模式(一)—單例模式(Singleton Pattern)PHP設計模式單例
- 單例模式(Singleton Pattern)單例模式
- 深入理解 JavaScript 單例模式 (Singleton Pattern)JavaScript單例模式
- 設計模式—singleton(單例模式)設計模式單例
- java設計模式-單例模式SingletonJava設計模式單例
- Singleton 單例設計模式單例設計模式
- 使用C# (.NET Core) 實現單體設計模式 (Singleton Pattern)C#設計模式
- PHP設計模式(四)單例模式(Singleton)PHP設計模式單例
- 《設計模式》 - 1. 單例模式( Singleton )設計模式單例
- 設計模式系列之單例模式(Singleton Pattern)——確保物件的唯一性設計模式單例物件
- Scala 與設計模式(一):Singleton 單例模式設計模式單例
- 設計模式 - 單例模式Singleton的8種寫法設計模式單例
- 設計模式之“物件效能模式”: Singleton 單例模式(筆記)設計模式物件單例筆記
- Python單例模式(Singleton)的N種實現Python單例模式
- 單例模式(Singleton)單例模式
- 單例模式 singleton單例模式
- 2.C#設計模式系列01_單例模式_SingletonC#設計模式單例
- 理解設計模式之單例模式(Javascript)設計模式單例JavaScript
- C++設計模式——命令模式(command pattern)C++設計模式
- 【php實現設計模式】之單例模式PHP設計模式單例
- 用Python實現設計模式——單例模式Python設計模式單例
- 一天一個設計模式(二) - 單例模式(Singleton)設計模式單例
- 單例模式c++實現單例模式C++
- JAVA中實現單例(Singleton)模式的八種方式Java單例模式
- 設計模式回顧——單例模式(C++)設計模式單例C++
- 設計模式:單例模式的使用和實現(JAVA)設計模式單例Java
- Java單例設計模式的理解與常規實現方式Java單例設計模式
- Go 實現常用設計模式(一)單例模式Go設計模式單例
- laravel singleton 單例模式使用Laravel單例模式
- Singleton——單例模式(8種)單例模式
- 設計模式:命令模式(Command Pattern)及例項設計模式
- JAVA設計模式 1 設計模式介紹、單例模式的理解與使用Java設計模式單例
- 設計模式(四)Singleton設計模式設計模式
- 設計模式學習-使用go實現單例模式設計模式Go單例
- Singleton設計模式設計模式
- Singleton(單例)——物件建立型模式單例物件模式