Java23種設計模式【1】----》單例模式
阿新 • • 發佈:2018-12-18
23種模式分類:
模式:固定的套路
面向物件重要的模式
一、原理
保證一個類只有一個物件,並且提供一個全域性的訪問點
二、應用場景
三、優點
記憶體佔用小
四、最好擁有的特點
執行緒安全,呼叫效率高,懶載入----》推薦使用靜態內部類實現
五、常見的五種單例模式
1、餓漢式
呼叫頻繁推薦餓漢式
優點:採用類載入是類初始化的時候建立的,是天然執行緒安全的模式。
缺點:但如過沒有被呼叫,就浪費了資源,因為物件已經建立了
測試:
2、懶漢式
優點:當建立類開支大時用這種模式,節約資源
缺點:由於synchronized放在了方法上,所以當執行緒較多時,都得等待,導致效率低下
3、雙重檢查鎖模式
優點:綜合了餓漢式和懶漢式
缺點:
4、靜態內部類實現
優點:執行緒安全,懶載入,效率高
執行緒安全:採用了內部類載入,類載入是天然執行緒安全的;instance 是static final的,表示該例項只能建立一次不能被修改,從而保證了執行緒的安全
懶載入:靜態內部類不會隨著類初始化時初始化,只有呼叫時才初始化
效率高:使用時直接呼叫,不用等待
5、列舉實現
優點:最簡單最好用,天然單例,呼叫效率高
缺點:無延遲載入
測試:
六、實現方式總結
七、如何選用
不需要延時載入:列舉式好於餓漢式
需要延時載入:靜態內部類式好於懶漢式