C 設計模式 單例模式的實現

2022-04-12 05:02:09 字數 1818 閱讀 9772

1. 什麼是單例

保證乙個類只有乙個例項的實現方法。

2. 使用場景

頁面訪問計數器

需要保持狀態的工具類

需求很多,不能一一枚舉了

3. 實現方

非執行緒安全

1     /// 2     /// 單例模式的實現

3 ///

4 public sealed class singleton

5

13 /// 14 /// 定義公有方法提供乙個全域性訪問點,同時你也可以定義公有屬性來提供全域性訪問點

15 ///

16 ///

17 public static singleton instance()

18

24 return _instance;

25 }

26 }

上面的單例模式的實現在單執行緒下確實是可以的,但是在多執行緒環境下會存在兩個執行緒同時執行if (instance == null)並且建立兩個不同的例項

簡單執行緒安全

1     /// 2     /// 單例模式的實現

3 ///

4 public sealed class singleton

5

15 16 public static singleton instance()

17

28 }

29 return instance;

30 }

31 }

上面的例子解決了多執行緒的問題,但是每個執行緒呼叫instance()都會使用到鎖,而呼叫鎖的開銷較大,這個實現會有一定的效能損失。

雙重驗證執行緒安全

1     /// 2     /// 單例模式的實現

3 ///

4 public sealed class singleton

5

15 16 public static singleton instance()

17

30 }

31 }

32 return instance;

33 }

34 }

上面的例子在保證執行緒安全的同時提高了效能

靜態變數實現單例

1     /// 2     /// 單例模式的實現

3 ///

4 public sealed class singleton

5

12 13 public static singleton instance()

14

17 }

上面的例子利用.net的特性來完成單例模式的建立,也是執行緒安全的

4. 優點

在記憶體中只有乙個物件,節省記憶體空間;

避免頻繁的建立銷毀物件,可以提高效能;

避免對共享資源的多重占用,簡化訪問;

為整個系統提供乙個全域性訪問點。

設計模式 C 實現單例模式

class singleton singleton singleton sing null singleton singleton getinstance 單例模式的實現要點 1 首先要將類的建構函式 複製建構函式和過載的賦值操作符設定為私有方法private,這樣禁止使用者呼叫建構函式來建立物件,...

設計模式 單例模式 C 實現

定義 指乙個類只有乙個例項,且該類能自行建立這個例項的一種模式。特點 1.單例類只有乙個例項物件 2.該單例物件必須由單例類自行建立 3.單例類對外提供乙個訪問該單例類的全域性訪問點。結構 單例類的建構函式往往是私有的。第一種 懶漢式單例 這種模式特點是類載入時沒有生成單例,只有當第一次呼叫geti...

C 設計模式實現 單例

單例模式的使用非常廣泛,其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 同時要禁止例項的類拷貝和類賦值 該例項被所有程式模組共享。有很多地方需要這樣的功能模組,如系統的日誌輸出,印表機的操作。返回單例的型別一般有兩種,分別為指標和引用,uml圖如下 如下 單例模式的最優實現 incl...