單例模式中餓漢式和懶漢式

2021-08-14 18:57:12 字數 1007 閱讀 8949

本文主要是本人對單例模式中餓漢式和懶漢式的一些理解;

首先我們了解單例模式。

何為單例模式,本人認為,只有不大於1個的例項物件可以被呼叫,那麼就可以被稱之為單例模式。

那麼,餓漢式和懶漢式又是什麼呢?

下面本人用例項展示自己對這兩者的理解;

懶漢式:

懶漢,從名字上來看就知道,懶麼,到了要用到的時候再去;

餓漢式:

餓漢式相對於懶漢式來說,就勤快了,不需要等到需要的時候催著去做,自己在一開始就做好準備了;

測試類:

我們來看列印結果:

懶漢式:

餓漢式:

結果:可以看到,餓漢式在沒有呼叫時已經進行了例項化,而懶漢式在判斷為空時才進行例項化。

總結:本人在學習這個知識的時候有位大牛說了一句很厲害的話:餓漢式是「用空間換時間」,懶漢是「用時間換空間」;

怎麼個意思呢?餓漢式在啟動時已經例項化物件,一直等待被呼叫,那麼這個物件就一直在記憶體中,在呼叫時可以直接呼叫;懶漢式只有等到被呼叫時才去判斷是否為空從而判斷是否進行例項化物件的操作,那麼在這之前記憶體中並不存在此例項物件,判斷時就影響到了程式的執行速度;

懶漢和餓漢的問題在於,餓漢式一直占用著記憶體;懶漢式在高併發的狀態下不安全,容易出現問題,可以嘗試使用同步限制解決。

分享使人進步。

單例模式 懶漢式 和 餓漢式

單例模式三要素 a 私有構造方法 這樣外界就沒辦法建立物件 b 私有靜態引用指向自己例項 c 以自己例項為返回值的公有靜態方法 對外暴露介面獲取例項 在spring中建立的bean例項預設都是單例模式存在的。所謂 懶漢式 與 餓漢式 的區別,是在與建立單例物件的時間不同。懶漢式 是在你真正用到的時候...

單例模式 餓漢式和懶漢式

1.單例模式。singleton無論外界有多少物件都是乙個指向同乙個位址。節約空間。1 構造方法私有化 2 在本類中建立乙個static修飾的物件。3 所有的屬性必須私有化。4 通過乙個方法來把本類中建立的該物件返回。2.餓漢式 指全域性的單例例項在類裝載時構建。class people publi...

單例模式(餓漢式和懶漢式)

單例模式 餓漢式和懶漢式 餓漢式單例模式,static表變數會在裝載時初始化,不會涉及多個執行緒物件訪問該物件的問題,虛擬機器只會保證裝載一次該類,不會發生併發的問題,可以省略synchronized關鍵字 缺點 如果只是載入本類,而不是呼叫getinstance方法,永遠不呼叫,則會造成資源浪費的...