C 之單例模式

2022-08-21 12:09:12 字數 1207 閱讀 6073

1、c++單例模式的概念及作用

單例模式也稱為單件模式、單子模式,可能是使用最廣泛的設計模式。其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點,該例項被所有程式模組共享。

2、單例模式的實現原理

(1)私有靜態指標變數實現:使用類的私有靜態指標變數指向類的唯一例項,並用乙個公有的靜態方法獲取該例項。

(2)靜態區域性變數實現:在公有靜方法中定義指向該類的乙個靜態區域性變數,並返回該靜態區域性變數。

3、單例模式的實現**

(1)

//私有靜態指標變數實現

class

singleton

static singleton *pinstance;

public

:

static singleton *getinstance()

};

(2)

//靜態區域性變數

class

singleton

public

:

static singleton &getinstance()

};

4、擴充套件

a)      把建構函式設為私有,禁用賦值和複製。帶來的問題:main中無法隨意生成物件

b)     提供乙個static函式繞過建構函式為private的限制。問題:物件不唯一。

c)      設定乙個static指標,每次先判斷是否為null。此時實現了乙個簡單的單例模式。但是此時在多執行緒環境下不唯一。

d)     引入互斥鎖,實現對getinstance內臨界區的互斥訪問。此時每次呼叫都需要上鎖,導致效率下降。

e)      採用double check模式,使得不必每次呼叫都需要加鎖,提高了效率。

5、dclp(double-check-locking-pattern)

class

singleton

return

pinstance_;

}private

: singleton()

static singleton *pinstance_;

static

mutexlock mutex_;

};

c 之單例模式

1 本篇主要討論下多執行緒下的單例模式實現 首先是 double check 實現方式 這種模式可以滿足多執行緒環境下,只產生乙個例項。templateclass dclsingleton return value protected dclsingleton dclsingleton const ...

c 多執行緒單例模式 C 設計模式之單例模式

單例模式 乙個類在記憶體中只有乙個物件 例項 並且提供乙個可以全域性訪問或者獲取這個物件的方法。這兩天學的,寫了個小例子,問了同事一些關於執行緒的問題,還有從網上查了一些資料。還犯了一些低階的錯誤。vs2017控制台輸出文字亂碼,從網上找了一些方法不管用,最後發現是自己新建專案選錯模板了,選擇了.n...

單例模式 之 單例模式 Holder

之前我寫過 單例模式中的餓漢模式和懶漢模式 他們雖然都能實現單例模式 但是優缺點很明顯 餓漢模式 不能懶載入 類載入就會被例項化 消耗很大,在併發情況下安全性很高。懶漢模式 能實現懶載入,但是在併發情況下安全性不是很高。雖然一步一步的優化,安全性得到了保證,但是卻使用了synchronized 對效...