面試問題設計模式:單例模式整理(轉發)

1、懶漢式

懶漢式,顧名思義就是實例在用到的時候纔去創建,“比較懶”,用的時候纔去檢查有沒有實例,如果有則返回,沒有則新建。有線程安全和線程不安全兩種寫法,區別就是synchronized關鍵字。

2、餓漢式

餓漢式,從名字上也很好理解,就是“比較勤”,實例在初始化的時候就已經建好了,不管你有沒有用到,都先建好了再說。好處是沒有線程安全的問題,壞處是浪費內存空間。

3、雙檢鎖

雙檢鎖,又叫雙重校驗鎖,綜合了懶漢式和餓漢式兩者的優缺點整合而成。看上面代碼實現中,特點是在synchronized關鍵字內外都加了一層 if 條件判斷,這樣既保證了線程安全,又比直接上鎖提高了執行效率,還節省了內存空間。

4、靜態內部類

靜態內部類的方式效果類似雙檢鎖,但實現更簡單。但這種方式只適用於靜態域的情況,雙檢鎖方式可在實例域需要延遲初始化時使用。

5、枚舉

枚舉的方式是比較少見的一種實現方式,但是看上面的代碼實現,卻更簡潔清晰。並且她還自動支持序列化機制,絕對防止多次實例化。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章