單例模式-Singleton
單例模式:保證一個類僅有一個實例,並提一個訪問它的全局訪問點。
通常我們可以讓一個全局變量使得一個對象被訪問,但它不能防止你實例化多個對象。一個最好的辦法就是,讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例可以被創建,並且他可以提供一個訪問該實例的方法。
單例模式的兩種實現方式:
懶漢式:加載類事較慢,但運行時獲取對象速度較快,線程安全
/**
* 懶漢模式(在類加載時初始化實例)
*/
public class LazySingleton {
// 1.將構造方法私有化,不允許外部直接創建對象
private LazySingleton() {
}
// 2.創建類的唯一實例
private static LazySingleton instance = new LazySingleton();
// 3.提供一個用於獲取實例的方法
public static LazySingleton getInstance() {
return instance;
}
}
餓漢式:加載類時較快,但運行時第一次獲取對象是較慢,線程不安全
/**
* 餓漢式(在第一次獲取實例的時候,初始化實例)
*/
public class HungrySingleton {
// 1.私有化默認構造函數
private HungrySingleton() {
}
// 2.聲明類的唯一實例,用private static修飾符修飾
private static HungrySingleton instance;
// 3.創建一個全局的獲取對象的方法,使用private static修飾符修飾
public static HungrySingleton getInstance() {
if (instance == null) {
instance = new HungrySingleton();
}
return instance;
}
}
單例模式-Singleton