Java設計模式之單例模式
用處:
爲了避免因爲創建了多個實例造成資源的浪費,且多個實例由於多次調用容易導致結果出現錯誤,而使用單例模式能夠保證整個應用中有且只有一個實例。
特點:
- 單例類只能有一個實例
- 單例類必須自己創建自己的唯一實例
- 單例類必須給所有其他對象提供這一實例
實現方式:
單例定義 | 單例實現 |
---|---|
不允許其他程序用new對象 | 私有化該類的構造函數 |
在該類中創建對象 | 通過new在本類中創建一個本類對象 |
對外提供一個可以讓其他程序獲取該對象的方法 | 定義一個公有的方法,將在該類中所創建的對象返回 |
代碼參考
單例模式有多種寫法,懶漢、餓漢等。
分享一個比較不錯的懶漢式寫法~
public class Singleton {
private Singleton() {
}
/**
* 單例模式懶漢式雙重校驗鎖
* 懶漢式變種,屬於懶漢式的最好寫法,保證:延遲加載和線程安全
*/
private static Singleton singleton;
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}