1、餓漢式(執行緒安全,呼叫效率高,但是不能延時載入):
public class user
// 其他地方通過此方法獲取單例物件
public static user getinstance()
}
2.懶漢式(執行緒安全,呼叫效率不高,但是能延時載入):public class singletondemo2
//方法同步,呼叫效率低
public static synchronized singletondemo2 getinstance()
return instance;
}}
3.double checklock實現單例:dcl也就是雙重鎖判斷機制(由於jvm底層模型原因,偶爾會出問題,不建議使用):public class singletondemo5
public static singletondemo5 newinstance() }}
return singletondemo5;
}}
4.靜態內部類實現模式(執行緒安全,呼叫效率高,可以延時載入)public class singletondemo3
private singletondemo3(){}
public static singletondemo3 getinstance()
}
5.列舉類(執行緒安全,呼叫效率高,不能延時載入,可以天然的防止反射和反序列化呼叫)public class user1
private static enum singletondemo04
public user1 getinstance()
}}
如何選擇單例建立方式
如果不需要延遲載入單例,可以使用列舉或者餓漢式,相對來說列舉性好於餓漢式。
如果需要延遲載入,可以使用靜態內部類或者懶漢式,相對來說靜態內部類好於懶漢式。
最好使用餓漢式
23種設計模式 單例模式(5種)
常見應用場景 window中任務管理器就是典型的單例 window中 站 專案中,讀取配置檔案的類,一般也只有乙個物件,沒有必要每次使用配置檔案資料,每次new乙個物件去讀取 的計數器 保證同步 應用程式的日誌應用,資料庫連線池一般也是採用單例,因為資料庫連線也是一種資料庫資源 public cla...
單例模式 的5種實現
一 餓漢式 類裝載的時候完成初始化,避免了多執行緒問題,缺點 在裝載的時候完成初始化,記憶體可能浪費 class singleton private final static singleton instance new singleton public static singleton getin...
23種設計模式之建立型模式 5 單例模式
單例設計模式可以分為 懶漢式餓漢式雙重檢測鎖 靜態內部類列舉 下面是詳細介紹 public class singleton public static singleton getinstance 優點 這種寫法比較簡單,就是在類裝載的時候就完成例項化。避免了執行緒同步問題。缺點 在類裝載的時候就完成...