天天看點

java二十三種設計模式----(二)單例設計模式 :“懶漢式”與“餓漢式”的差別 為什麼通常使用餓漢式

首先說下單例設計模式

單例模式:保證整個應用中某個執行個體有且隻有一個。

有些對象我們隻需要一個,

比如:配置檔案,工具類,線程池,緩存,日志對象等。

如果創造出多個執行個體,就會導緻許多問題,不如占用過多資源,不一緻的結果等,

應用場合:有些對象隻需要一個就足夠了,如古代皇帝

作用:保證整個應用程式中某個執行個體有且隻有一個。

類型:餓漢式,懶漢式。

下面用代碼簡單介紹下餓漢式和懶漢式

餓漢式

懶漢式

餓漢式和懶漢式的差別

 所謂“懶漢式”與“餓漢式”的差別,是在與建立單例對象的時間不同。  

 懶漢式:是在你真正用到的時候才去建這個單例對象:(用時才建立)

 餓漢式:是在不管你用的用不上,一開始就建立這個單例對象 (用不用都先建立)

一:差別 

餓漢式:

1,特點:餓漢式加載類時比較慢,但運作時擷取對象的速度比較快。

                    在類建立的同時就已經建立好一個靜态的對象供系統使用,以後不再改變

2,線程安全:線程安全

1,特點:懶漢式加載類時比較快,但運作時擷取對象的速度比較慢

2,線程安全:線程不安全。

二:優缺點對比

優點是延時加載執行個體(對象)、 是在需要的時候才建立對象。缺點是應該用同步。

如果在建立執行個體對象時不加上synchronized則會導緻對對象的通路不是線程安全的。

 餓漢式

餓漢式是線程安全的,在類建立的同時就已經建立好一個靜态的對象供系統使用,以後不在改變  

推薦使用餓漢式

繼續閱讀