首先說下單例設計模式
單例模式:保證整個應用中某個執行個體有且隻有一個。
有些對象我們隻需要一個,
比如:配置檔案,工具類,線程池,緩存,日志對象等。
如果創造出多個執行個體,就會導緻許多問題,不如占用過多資源,不一緻的結果等,
應用場合:有些對象隻需要一個就足夠了,如古代皇帝
作用:保證整個應用程式中某個執行個體有且隻有一個。
類型:餓漢式,懶漢式。
下面用代碼簡單介紹下餓漢式和懶漢式
餓漢式
懶漢式
餓漢式和懶漢式的差別
所謂“懶漢式”與“餓漢式”的差別,是在與建立單例對象的時間不同。
懶漢式:是在你真正用到的時候才去建這個單例對象:(用時才建立)
餓漢式:是在不管你用的用不上,一開始就建立這個單例對象 (用不用都先建立)
一:差別
餓漢式:
1,特點:餓漢式加載類時比較慢,但運作時擷取對象的速度比較快。
在類建立的同時就已經建立好一個靜态的對象供系統使用,以後不再改變
2,線程安全:線程安全
1,特點:懶漢式加載類時比較快,但運作時擷取對象的速度比較慢
2,線程安全:線程不安全。
二:優缺點對比
優點是延時加載執行個體(對象)、 是在需要的時候才建立對象。缺點是應該用同步。
如果在建立執行個體對象時不加上synchronized則會導緻對對象的通路不是線程安全的。
餓漢式
餓漢式是線程安全的,在類建立的同時就已經建立好一個靜态的對象供系統使用,以後不在改變
推薦使用餓漢式