1.單例設計模式:一個類只能有一個對象
1.1 創建單例類的步驟:
1.將構造方法私有化
2.創建私有的靜態成員變量
3.共有的靜態成員方法,提供當前的唯一對象
1.2 創建單例的兩種方式:
1.餓漢式 -- 一開始執行時就先給單例類對象賦值
//方式一:餓漢式 一開始執行,就先給單例類對象賦值
class SingleInstance{
//在單例類的內部創建了一個私有化對象
private final static SingleInstance singleInstance = new SingleInstance();
//構造方法私有化
private SingleInstance() {
}
//建立一個public方法,將單例類對象提供出去
public static SingleInstance getSingleInstance() {
return singleInstance;
}
//單例類的功能區
}
2. 懶漢式 -- 一開始爲null,什麼時候使用,就什麼時候賦值
懶漢式我們這裏討論考慮線程安全的情況。需要用synchronized關鍵字進行加鎖,保證線程安全。
//懶漢式
class SingleInstance{
private static SingleInstance instance = null;
private SingleInstance() {
}
public static SingleInstance getInstance() {
if(instance == null ) {//編寫最外層的if,是爲儘量少的判斷線程同步,提高效率
synchronized (SingleInstance.class) {//獲取當前類的字節碼充當同步代碼塊的鎖,讓多個線程之間互斥
if(instance == null) {
instance = new SingleInstance();
}
}
}
return instance;
}
//工作位置
}