1. 程式人生 > >Java23種設計模式【1】----》單例模式

Java23種設計模式【1】----》單例模式

23種模式分類:

模式:固定的套路

面向物件重要的模式

一、原理

保證一個類只有一個物件,並且提供一個全域性的訪問點

二、應用場景

三、優點

記憶體佔用小 

四、最好擁有的特點

執行緒安全,呼叫效率高,懶載入----》推薦使用靜態內部類實現

五、常見的五種單例模式

1、餓漢式

呼叫頻繁推薦餓漢式

優點:採用類載入是類初始化的時候建立的,是天然執行緒安全的模式。

缺點:但如過沒有被呼叫,就浪費了資源,因為物件已經建立了

測試:

2、懶漢式

優點:當建立類開支大時用這種模式,節約資源

缺點:由於synchronized放在了方法上,所以當執行緒較多時,都得等待,導致效率低下

3、雙重檢查鎖模式

優點:綜合了餓漢式和懶漢式

缺點: 

4、靜態內部類實現

優點:執行緒安全,懶載入,效率高

執行緒安全:採用了內部類載入,類載入是天然執行緒安全的;instance 是static final的,表示該例項只能建立一次不能被修改,從而保證了執行緒的安全

懶載入:靜態內部類不會隨著類初始化時初始化,只有呼叫時才初始化

效率高:使用時直接呼叫,不用等待

5、列舉實現

優點:最簡單最好用,天然單例,呼叫效率高

缺點:無延遲載入

測試:

六、實現方式總結

七、如何選用

不需要延時載入:列舉式好於餓漢式

需要延時載入:靜態內部類式好於懶漢式