單例模式入門講解C++和Qt5
- 為了幹嘛呢?
就是建立一個類,讓這個類的物件只有一個(比如叫session),並且在其他類中可以呼叫操作這個物件(session)的函式和屬性。 更專業的定義可以百度百科!
- 需求:
1.用指標 2.物件導向的知識點 3.函式生成和使用 4.基礎語法(變數,資料型別等)
- 程式碼講解
- 第一步:建構函式私有化
讓這個類只生成一個例項那麼把這個例項儲存在這個類中(儲存在靜態成員中- static)
class A
{
private:
A(){ }
static A *m_pInstance;
//把這個例項儲存在這個類中_私有的靜態成員(儲存在靜態成員中- static)用這個指標來儲存。
這樣做是為了不讓其他檔案中隨意生成建立例項(只能在我們這個類的內部生成。
所以需要一個介面來生成這個唯一的例項。這是第二步。
public:
static A *createInstance(){
if (m_pInstance == NULL){
m_pInstance = new A();
}
return m_pInstance; //如果發現這個指標為空(沒有這個類的物件),那麼就生成一個,否則直接return 已經有的這個例項。
}
void test(){
cout<<"this is a singleton instance";
}
所以:
第一步:將建構函式私有化,防止其他地方呼叫生成物件。(單例模式嘛,只能有一個類的物件)
第二步:將生成的唯一例項儲存在類的靜態成員裡。
第三步:要提供一個介面,用於生成或獲取這個例項。
注意:宣告全域性變數的時候不要在標頭檔案!
A *A::m_pInstance = NULL;
我在Qt5下用C++的原始碼如下。
.h檔案
上圖.h檔案對應的.cpp檔案。
其他類檔案中,修改使用單例類的屬性和函式- 結果演示圖:
相關文章
- C++中單例模式和static的對比C++單例模式
- 單例模式c++實現單例模式C++
- 設計模式回顧——單例模式(C++)設計模式單例C++
- 設計模式開門之單例模式設計模式單例
- 這篇文章只簡單通俗的講單例模式單例模式
- DCL懶載入單例模式單例模式
- 從例項出發,瞭解單例模式和靜態塊單例模式
- C++學習隨筆——簡單的單例設計模式例項C++單例設計模式
- opengl簡單入門例項
- 設計模式之單例模式詳解設計模式單例
- C++ std::call_once 實現單例模式C++單例模式
- C++從靜態型別到單例模式C++型別單例模式
- 設計模式 - 原則及例項講解設計模式
- 設計模式例項講解 - 里氏替換設計模式
- 設計模式例項講解 - 介面隔離設計模式
- 設計模式例項講解 - 依賴倒置設計模式
- c#中單例模式詳解C#單例模式
- 單例模式單例模式
- ABAP和Java單例模式的攻防Java單例模式
- 設計模式例項講解 - 開放封閉設計模式
- ActiveMQ入門系列二:入門程式碼例項(點對點模式)MQ模式
- 設計模式入門-簡單工廠模式設計模式
- C++ 單例類别範本(詳解)C++單例
- iOS架構入門 - MVC模式例項演示iOS架構MVC模式
- Flutter中的Image入門講解Flutter
- Maven例項講解教程,從零開始學Maven,帶你快速入門!Maven
- PHP 安全問題入門:10 個常見安全問題 + 例項講解PHP
- Javascript設計模式Revealing Module 揭示模式單例模式詳解JavaScript設計模式單例
- 防抖和節流(例項講解)
- 重走JAVA之路(二):面試中的單例模式(從入門到放棄)Java面試單例模式
- Java單例模式:缺點和優點Java單例模式
- java單例模式懶漢和餓漢Java單例模式
- Java入門之初識設計模式---單列模式Java設計模式
- Java入門之初識設計模式—單列模式Java設計模式
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例