設計模式之單例模式的5種實現方式

2021-09-20 21:25:52 字數 1018 閱讀 6692

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 優點 這種寫法比較簡單,就是在類裝載的時候就完成例項化。避免了執行緒同步問題。缺點 在類裝載的時候就完成...