C#使用Singleton模式
C#語言有很多值得學習的地方,這里我們主要介紹C#使用Singleton模式,包括介紹C#使用Singleton模式的實現有兩個技巧等方面。
C#使用Singleton模式
Singleton(譯為單件或單態)模式是設計模式中比較簡單而常用的模式。
有些時候在整個應用程序中,會要求某個類有且只有一個實例,這個時候可以采用Singleton模式進行設計。C#使用Singleton模式設計的類不僅能保證在應用中只有一個實例,而且提供了一種非全局變量的方法進行全局訪問,稱為全局訪問點,這樣對于沒有全局變量概念的純面向對象語言來說是非常方便的,比如C#。
本文用一個計數器的例子來描述在C#使用Singleton模式:計數的值設計為計數器類的一個私有成員變量,它被4個不同的線程進行讀寫操作,為保證計數的正確性,在整個應用當中必然要求計數器類的實例是唯一的。
Singleton的實現方式
首先看看教科書方式的Singleton標準實現的兩種方法,以下用的是類C#偽代碼:
方法一:
- using System;
- namespace csPattern.Singleton
- {
- public class Singleton
- {
- static Singleton uniSingleton = new Singleton();
- private Singleton() {}
- static public Singleton instance()
- {
- return uniSingleton;
- }
- }
- }
方法二:
- using System;
- namespace csPattern.Singleton
- {
- public class Singleton
- {
- static Singleton uniSingleton;
- private Singleton() {}
- static public Singleton instance()
- {
- if (null == uniSingleton)
- {
- uniSingleton = new Singleton _lazy();
- }
- return uniSingleton;
- }
- }
- }
C#使用Singleton模式的實現有兩個技巧:一是使用靜態成員變量保存“全局”的實例,確保了唯一性,使用靜態的成員方法instance() 代替 new關鍵字來獲取該類的實例,達到全局可見的效果。二是將構造方法設置成為private,如果使用new關鍵字創建類的實例,則編譯報錯,以防編程時候筆誤。
【編輯推薦】