C 設計模式 單例模式

2022-06-09 22:06:12 字數 1032 閱讀 7645

一.介紹  

單例模式(singleton pattern)。屬於建立型模式。它保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

二.實現

結構為,乙個私有的靜態變數,用於存放該例項。私有的建構函式,防止外部直接建立該類例項。

建立單例模式有兩種方式。餓漢式和懶漢式。

餓漢式是直接在程式中初始化乙個物件例項。

//

餓漢式public

class

singleton

//////

獲取靜態例項的靜態方法

/// ///

public

static

singleton getinstance()

}

上面餓漢式建立的單例模式有乙個缺點,就是程式不使用也會建立乙個例項,這樣會佔記憶體。而使用懶漢式建立的單例模式,是需要使用的時候,才去建立例項。

//

懶漢式public

class

singleton2

//////

獲取靜態例項的靜態方法

/// ///

public

static

singleton2 getinstance()

return

instance;

}}

上面兩種建立單例模式的方法在單執行緒使用的時候沒有問題,餓漢式建立的例項在多執行緒中也沒有問題,懶漢式建立的例項在多執行緒中就會出現問題。我們可以通過lock關鍵字在多執行緒中保證單例。

//

單例模式 雙重檢查

public

class

singleton3

//////

獲取靜態例項的靜態方法

/// ///

public

static

singleton3 getinstance()}}

return

instance;

}}

參考 

設計模式 C 設計模式 單例模式

設計模式 物件導向設計七大原則 設計模式 設計模式概念和分類 設計模式 c 設計模式 單例模式 設計模式 c 設計模式 工廠方法模式 設計模式 c 設計模式 抽象工廠模式 設計模式 c 設計模式 建造者模式 設計模式 c 設計模式 原型模式 作者自用的泛型單例模組 單例模式 singleton pa...

C 設計模式 (單例模式)

單例模式 顧名思義,只有乙個物件例項,即保證乙個類只有乙個物件可以使用。作用類似於乙個全域性變數,可以任意呼叫,但是比全域性變數更容易管理,使用。單例模式也有很多種實現方式 第一種實現方法 h檔案 class csock test public casyncsocket cpp檔案 csock te...

設計模式 單例模式(c )

在gof 設計模式 中,單例模式的定義為 保證乙個類僅有乙個例項,並提供乙個該例項的全域性訪問點。下面是單例模式的c 實現 方案一 建構函式和拷貝建構函式一定要宣告為private 定義static成員 單例指標和獲取單例指標的函式 static單例指標要在類外定義並初始化 實現獲取單例指標的函式時...