C 設計模式 單件模式以及其擴充套件和思考

2021-08-25 13:21:16 字數 1513 閱讀 5063

很多場合給出的非多執行緒的情況下單件模式的實現**如下:

using system; using system.collections.generic; using system.linq; using system.text; namespace singleton else console.read(); } } class singelclass public static singelclass instance() return mysingelclass; } } }

多執行緒的單件模式的實現如下:

using system; using system.collections.generic; using system.linq; using system.text; namespace singleton else console.read(); } } class singelclass } } return _instance; } protected singelclass() private static volatile singelclass _instance = null; } }

簡單一些的singleton模式可以設計如下:

using system; using system.collections.generic; using system.linq; using system.text; namespace singleton else console.read(); } } class singelclass } }

當然,根據上述幾個,可以經過演繹出來更多的**,不過目前來看,第三個**是最簡單的實現**。

說到單件模式。很容易遇到的乙個情況是這樣的。多執行緒的互斥情況的一些情況(asp.net中要對乙個資料進行操作時候的鎖定):如我們要對某個資源進行處理,在處理完成前不允許其他方法和物件對該資源進行處理。 singleton模式通常指的是要求乙個物件,例項化乙個物件;而是多執行緒的互斥通常指的是多個執行緒同時訪問乙個資源的時候進行列隊進行,同一時間只允許某一種;或者某一類的操作。

在對同乙個物件的不同的執行緒操作中:可以使用下面的lock**。

using system; using system.collections.generic; using system.linq; using system.text; using system.threading; namespace singleton } class singelclass } public void test2() } } }

要在全域性對某個資源進行互斥的話:

可以使用singleton模式結合上述的**進行。或者把 lock 的物件設定為static

using system; using system.collections.generic; using system.linq; using system.text; using system.threading; namespace singleton } class singelclass } public void test2() } } }

關於mutex物件的詳細用見:

詳細的見:

C 設計模式 單件模式以及其擴充套件和思考

很多場合給出的非多執行緒的情況下單件模式的實現 如下 多執行緒的單件模式的實現如下 簡單一些的singleton模式可以設計如下 當然,根據上述幾個,可以經過演繹出來更多的 不過目前來看,第三個 是最簡單的實現 說到單件模式。很容易遇到的乙個情況是這樣的。多執行緒的互斥情況的一些情況 asp.net...

c 設計模式 單件模式

前言 你可知我寫你不容易啊。本來想說幾句的,增加可讀性。但是後面再來改吧!include includeusing namespace std class singlton 靜態成員,指向唯一的物件 static singlton instance public get instance stati...

c 設計模式之單件模式

在軟體系統中,經常有這樣一些特殊的類,必須保證他們在系統中只存在乙個例項,才能確保他們的邏輯的正確性。而單件模式,可以保證乙個類有且只有乙個例項並提供乙個訪問它的全域性訪問點,構建單件模式方法比較多,比較流行的做法是,在類中巢狀乙個靜態變數,並在第乙個建立該例項的時候設定該變數,進入類建構函式時候,...