參考的文件
單例要求乙個類裡面只有乙個例項,並且提供了乙個全域性的訪問點。
單例類裡面定義了乙個getinstance的方法,是乙個靜態方法。用於建立自己的唯一例項。
在乙個系統裡面要求某個類只有乙個例項才能使用單例模式。
比如印表機 或者乙個通訊口進行傳輸。
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace singleton
// methods
public static singleton getinstance()
}public class client}}
看程式1 靜態的成員變數。
2 私有或者受保護的建構函式,不允許通過new的方式建立例項。
3 通過開放getinstance方法來獲取例項。可以保證只初始化一次。
1. 針對多執行緒的情況,需要加入lock。
其中雙重鎖定比較合適,不用每次都lock影響效率。
如果instanch不為空,不續約進入鎖狀態。
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace singleton
public static singleton getinstance()}}
return instance;}}
}
sealed關鍵字宣告此類不能被繼承。
2. 延遲初始化
public sealed class singleton
public static singleton getinstance()
class nested
internal static readonly singleton instance = new singleton();}}
乙個計數器的例子
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading;
namespace singletoncounter
static public countsingleton instance()
public void add()
public int getcounter()
}public class countmutilthread
public static void dosomework()
}public void stratmain()
}public class client}}
執行結果:
單例模式的應用範圍很廣,經常使用。
很多人可能在沒學到設計模式時候已經使用到了。
重溫C 設計模式 安全的Singleton模式
單體模式 singleton pattern 是為了保證乙個類只能例項化一次 並且提供乙個訪問它的全域性訪問點。一般有兩種方法來使用單體模式。1 使用乙個靜態變數。2 使用建構函式判斷。先是使用靜態變數方法,我們通過乙個實體 instance 來確定是否當前的類已經被例項化,如果沒有就新增乙個 si...
C 物件導向設計模式 1 Singleton模式
動機 motivation 在軟體系統中,經常有這樣一些特殊的類,必須保證它們在系統中只存在乙個例項,才能確保它們的邏輯正確性,以及良好的效率。如何繞過常規的構造器,提供一種機制來保證乙個類只有乙個例項?這應該是類設計者的責任,而不是使用者的責任。意圖 intent 保證乙個類僅有乙個例項,並提供該...
java設計模式 Singleton單例模式
餓漢模式 package singleton created by anshay on 2017年10月14日 email anshaym 163.com 型別 餓漢模式 public class singleton 2.建立類的唯一例項,使用private static修飾 private不允許外...