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

單體模式(Singleton Pattern)是爲了保證一個類只能實例化一次,並且提供一個訪問它的全局訪問點。

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

1. 使用一個靜態變量。

2. 使用構造函數判斷。

 

先是使用靜態變量方法,

我們通過一個實體instance來確定是否當前的類已經被實例化,如果沒有就新增一個Singleton實例。但是這種方法不建議大家使用,如果是個多線程的工具來操作,你的單體概念就會蕩然無存。所以我們需要增加一個object,然後使用一個鎖來鎖定object防止多線程的實例化。也就是上圖中的註釋部分。

Private static readonly object padload = new object();

Lock(padload)

第二種方法是把構造函數設置爲共有的方法。但是通過一個靜態變量的計數器來限制類被實例化兩次。

 

如果計數器不爲零我們就給它拋出去一個異常。

看看運行結果:

 

多次實例化Singleton2時:

 

拋出異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章