重溫C 設計模式 安全的Singleton模式

2022-01-11 14:29:03 字數 613 閱讀 6336

單體模式

(singleton pattern)

是為了保證乙個類只能例項化一次

,並且提供乙個訪問它的全域性訪問點。

一般有兩種方法來使用單體模式。

1.使用乙個靜態變數。

2.使用建構函式判斷。

先是使用靜態變數方法,

我們通過乙個實體

instance

來確定是否當前的類已經被例項化,如果沒有就新增乙個

singleton

例項。但是這種方法不建議大家使用,如果是個多執行緒的工具來操作,你的單體概念就會蕩然無存。所以我們需要增加乙個

object,

然後使用乙個鎖來鎖定

object

防止多執行緒的例項化。也就是上圖中的注釋部分。

private static readonly object padload = new object();

lock(padload)

第二種方法是把建構函式設定為共有的方法。但是通過乙個靜態變數的計數器來限制類被例項化兩次。

如果計數器不為零我們就給它丟擲去乙個異常。

看看執行結果:

多次例項化

singleton2

時:丟擲異常。

重溫設計模式之狀態模式

狀態模式 state pattern 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。在生產流水線上,每個崗位的工人完成自己的步驟後,產品狀態發生變化,工人會交給下一環節處理。如果用 來描述一條披薩生產流水線,可以用狀態模式。pizza類為context角色,它封裝了客戶端感興...

重溫設計模式1 單例模式

ensure a class has only one instance,and provide a global point of access to it.確保某乙個類 只有乙個例項,而且自行例項化並向整個系統提供這個例項。當乙個物件需要在應用中被頻繁呼叫,或初始化需要非常大的開銷時,可以使用單...

重溫設計模式之 簡單 工廠模式

定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。常用場景 多資料庫實現 多種媒介的日誌記錄 uml圖 客戶端 public class client 簡單工廠模式存在乙個問題,如示例中需要增加新的資料庫型別時,需要修改employeedaofactor...