詳解懶漢模式和餓漢模式以及他們的改進

提到單例模式的話相信不少人都不會陌生,通常初級程序員也知道懶漢模式和餓漢模式。程序員

那麼什麼是單例模式呢?我我的低的理解就是當用這個類的對象的時候就只能建立同一個對象。是你,是你,仍是你!

而在單例模式中又常常是懶漢和惡漢式進行加載。並無癡漢也沒有電車。。。我什麼都不知道。

什麼是餓漢模式呢?很飢餓,你想一想,當人很飢餓時候是否是就有什麼吃什麼,那就是這個道理,因此就已加載類就建立對象。就好像當剛建好一個房子。主人就 搬了進去也不等裝修。

那麼她的代碼是怎麼實現的呢?對象

這就是餓漢模式。可是這個有一個問題,是什麼呢?那就是若是我只想要這個類的一個靜態方法,那麼當我在調用這個靜態方法時,這個對象也就被建立了,那麼這無疑是耗費內存的。就比如我給別人介紹一個房子,說這房子怎麼樣,廚房排風系統很好。這時主人忽然就跑了出來,快買快買。這就尷尬了。就比如這個冷笑話。blog

 

那麼既然餓漢有點不能知足,試試懶漢模式吧。懶漢模式就是用的時候再去加載。就比如剛纔我給別人介紹了房子的各類好,客人終於動心了就想買,這時候房子主人才出來和客人進行下一步的溝通。好咱們繼續看代碼。內存

 

這就是懶漢模式,這個因爲沒有靜態塊那麼就不會再類加載時就建立對象。只有調用這個方法時候才建立對象,並且須要判斷,就比如客人說接下來就和主人談吧,主任說談過了就和之前那個談。沒談過我如今就出來(這個例子是呼應那個判斷。感受有點欠火候)總以爲判斷有點不夠簡潔,不只有人要說了:就你事多!不判斷哪知道要不要建立對象。程序

那麼有沒有既能能夠調用其餘方法不建立對象,又能建立對象不須要判斷 就是同時修改了餓漢和懶漢的缺點的。有的!請看方法

看到沒,他就避免了兩個缺點,集美貌與優雅於一身。相對餓漢的靜態塊,他用了靜態內部類。相對於懶漢的每次調靜態方法都要進行判斷,他採起靜態內部類保證只之初創見一次對象。perfect!im

相關文章
相關標籤/搜索