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