單例模式 5種實現方式

2022-09-15 18:48:10 字數 876 閱讀 7625

單例模式能夠保證乙個類僅有唯一的例項,並提供乙個全域性訪問點。

1、餓漢式(執行緒安全,呼叫效率高,但是不能延時載入):

public class singleton 

public static singleton 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 enum singletondemo4

}如何選用:

-單例物件 占用資源少,不需要延時載入,列舉 好於 餓漢

-單例物件 占用資源多,需要延時載入,靜態內部類 好於 懶漢式

單例模式(5種實現方式)

1.餓漢式 不支援併發 此模式只能執行在單執行緒下,且類在載入時就已經建立好了例項,不管需不需要用。package com.lys 餓漢式 public class singleton1 private static singleton1 instance new singleton1 public...

5種方式實現單例模式

破壞單例模式的方法及應對 使用場景 單例模式的核心是乙個類只允許有乙個例項化物件。spring物件池預設就是單例模式。如果生產環境下某類只需要也只允許有乙個例項化物件就可以考慮使用單例模式。實現單例模式的策略是 構造方法私有化,也就是外部不允許通過new的方式獲取物件,而是提供乙個公開的靜態方法供外...

java單例模式的5種實現方式

簡介 單例模式是指在程式中只有乙個例項存在。並且在程式執行中的任何時候都可以獲取該例項物件。場景 1.android中資料庫多執行緒讀寫時,保證每個執行緒使用同乙個sqlitedatabase物件,否則會報錯 database is locked 2.android常用框架eventbus中使用了單...