創建型設計模式之Singleton(單例)設計模式
摘要:
Singleton(單例)設計模式確保一個類僅有一個實例,并提供全局訪問點。其結構包含一個靜態方法getInstance()用于獲取唯一實例,構造方法私有化防止外部實例化。適用于需要控制實例數量(如配置管理、線程池等)或需通過子類擴展但客戶端無需修改代碼的場景。示例代碼展示了通過靜態變量實現線程安全的單例模式,多次調用getInstance()返回同一實例,驗證了唯一性。
1)意圖:
保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
2)結構
其中:Singleton指定一個Instance操作,允許客戶訪問它的唯一實例,Instance是一個類
操作:可能負責創建它自己的唯一實例。
3)適用性
Singleton 模式適用于:
- 當類只能有一個實例并且客戶可以從一個眾所周知的訪問點訪問它時。
- 當這個唯一實例應該是通過子類可擴展的,并且客戶無法更改代碼就能使用一個擴展的實例時。
代碼
public class SingletonPattern {public static void main(String[] args) {Singleton instance1 = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();Singleton instance3 = Singleton.getInstance();Singleton instance4 = Singleton.getInstance();System.out.println("instance1 = " + instance1);System.out.println("instance2 = " + instance2);System.out.println("instance3 = " + instance3);System.out.println("instance4 = " + instance4);}
}class Singleton{private static final Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}