1-1、singleton.h
#ifndef singleton_h
#define singleton_h
#include using namespace std;
class singleton
; //構構函式,防止拷貝構造另乙個例項,作為protected
~singleton();//析構函式,作為protected
private:
static singleton* minstance; //類的唯一例項
//todo:這裡可以新增互斥鎖成員變數
};#endif // singleton_h
1-2、singleton.cpp
#include "singleton.h"
singleton * singleton::minstance = null;
singleton::singleton()
singleton::~singleton()
}singleton * singleton::instance()
}return minstance;
}void singleton::print()
2、main.cpp
/*
開發ide:qt creater
開發環境:qt c++
參考**:神秘果:
定義:單件(singleton)模式保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
理解:1.singleton模式用來取代全域性靜態變數。c++通過靜態成員變數來實現類例項全域性唯一性。
2.instance()方法是單件提供的唯一呼叫入口。
要點:1.為了防止外界呼叫產生多個例項,將構造方法、析構方法、拷貝構造方法、賦值過載方法都作為protected。
2.instance()方法產生物件方式有兩種:使用區域性static物件,生命期在首次進入區域性生命期產生,在程式結束時銷毀;
通過new產生新物件,在析構方法中delete物件。
3.獲取單件例項呼叫方式:singleton::instance()獲取物件指標。
4.解決多執行緒資源競爭條件。使用著名的「雙檢測鎖定」辦法來解決,即在鎖定前和鎖定後都檢測物件是否產生,
這樣既能保證加鎖效率又能保證單件例項的唯一性。
原始碼中通過singleton加以實現。
以上文字說明,從網上整理而來,有可能部分與其他同仁相同,請諒解,希望我們能夠共同交流,謝謝!
*/int main(int argc, char *argv)
執行結果:
=== jhluroom start *****===
construct singleton
this is a singleton instance
=== jhluroom finish _^_ ===
設計模式 單件模式
2015年1月29日16 02 59 單件模式是用來保證共有資源唯一性的設計模式,舉個例子吧,假如我們是藝人,我們在同乙個經紀人的協助下開展工作,我們可以委託這個經紀人做一些事情,但是我們不能委託經紀人在幫你做報表的同時幫我訂外賣。用程式猿的語言來表達就是,我們可能在多處地方持有對同一資源的引用。由...
設計模式 單件模式
保持單一物件有時非常必要,尤其是資源類,比如視窗資源,登錄檔等等,所謂的單件模式的定義是 確保乙個類只有乙個例項,並提供乙個全域性的訪問點。其類圖雖說比較簡單,但單例模式還是有很多陷阱的。首先,給出單例模式的經典的懶漢式寫法 懶漢式 需要例項物件時才建立,延遲建立 class single pubi...
設計模式 單件模式
單件模式 singleton 也叫單例模式,是一種建立型模式。它確保乙個類只有乙個例項,並提供全域性訪問。singleton中uniqueinstance類變數持有唯一的單件例項,getinstance 是靜態方法,可以通過類名在任何需要的地方使用它,與訪問全域性變數一樣,但是可以延遲例項化。餓漢式...