1.定義
保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
2.適用性
1)當類只能有一個實例而客戶可以從一個眾所周知的訪問點訪問它時。
2)當這個唯一實例應該是通過子類化可擴展的,并且客戶應該無需更改代碼就能使用一個擴展的實例時。
3.結構
圖1 單例模式類圖
注:
Singleton:定義一個Instance操作,允許客戶訪問它的唯一實例。Instance是一個類操作(C#中為靜態(tài)方法),Singleton負責創(chuàng)建它自己的唯一實例。
4.實現方法
1)經典模式
靜態(tài)變量uniqueInstance存儲唯一實例。公有靜態(tài)方法GetInstance提供訪問SingletonFirst的全局訪問點,由于除了GetInstance方法外,類的成員均為私有的,所以GetInstance提供的為唯一訪問方式。在GetInstance()方法中,對uniqueInstance是否為null做了判斷,因此使得對象只能被實例化一次。
1 public class SingletonFirst 2 { 3 private static SingletonFirst uniqueInst