【設計模式】——單例

        單例模式在實際開發中比較常用,之前接觸中只瞭解懶漢式和餓漢式,而單例的實現一共包含餓漢和懶漢在內一共是5中實現方式,爲了一目瞭然部分實現直接上圖片。

1、餓漢式(左側)

2、懶漢式(右側)


兩者實現的不同,直接反應到使用上:

        ①餓漢式的實例,在類初始化時直接完成實例化,不支持延時加載,懶漢式相反。

        ②餓漢式的訪問接口沒有進行同步控制,所以調用效率高,懶漢式相反。


3、靜態內部類



        靜態內部類結合了餓漢和懶漢的優點:可延時、線程安全、調用效率高。


        ①可延時:對象的實例化放在了靜態內部類中,類在進行初始化時不會執行到靜態內部類,只有在調用getInstance()方法時纔會執行靜態內部類的方法,實現對象的實例化

        ②內部類的加載過程是天然線程安全的

        


4、枚舉類實現單例


        優點:簡單、線程安全、調用效率高。

        缺點:不能實現延時

5、Double Check


        缺點:JVM底層內部模型原因,偶爾會出問題,不建議使用(具體原因不詳)。


總結

        頻繁調用的建議使用調用效率高的,如果創建代價大建議使用可延時的。

        不需要延時的:枚舉 好於 餓漢

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


可下載測試代碼。(http://download.csdn.net/detail/u013030682/9884459)


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