單例模式的寫法和應用

2021-07-11 01:44:17 字數 935 閱讀 5968

眾多設計模式中,單例模式比較常見的一種,面試和工作中也會經常接觸到。本文以乙個

c++開發者的角度來**單例模式幾種典型實現。設計模式經典

gof定義的單例模式需要滿足以下兩個條件:

1.  

保證乙個類只建立乙個例項。

2.  

提供對該例項的全域性訪問點。

如果系統有類似的實體(有且只有乙個,且需要全域性訪問),那麼就可以將其實現為乙個單例。實際工作中常見的應用舉例

class singleton

public:

staticsingleton& getinstance()

if(null== m_pinstance)

locklock;//基於作用域的 加鎖,超出作用域,自動呼叫析構函式解鎖

if(null== m_pinstance)

m_pinstance= new singleton;

return*m_pinstance;

private:

singleton();

~singleton();

singleton(constsingleton&);

singleton&operator = (const singleton&);

private:

staticsingleton* m_pinstance;

lazy singleton

的一種執行緒安全改造是在

instance()

中每次判斷是否為

null

前加鎖,但是加鎖是很慢的。

而實際上只有第一次例項建立的時候才需要加鎖。雙檢測鎖模式被提出來,改造之後大致是這樣

既然只需要在第一次初始化的時候加鎖,那麼在這之前判斷一下例項有沒有被建立就可以了,所以多在加鎖之前多加一層判斷,需要判斷兩次所有叫

double-checked。

單例模式寫法

單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...

單例模式的寫法,和DCL

總結設計模式是在大量的實踐中總結和理論化之後優的 結構 程式設計風格 以及解決問題的思考方式。所謂類的單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項。單列有如下幾個特點 class singleton 2.內部建立類的物件 4.要求此物件也必須宣告為靜態的 pr...

單例模式幾種寫法

1.餓漢式 public class singleton public static singleton getinstance 2.懶漢式 public class singleton 雙層檢測鎖 public static singleton getinstance return instanc...