以Java為例:
餓漢:
public final class VirtualCore {private static VirtualCore gCore = new VirtualCore(); private VirtualCore() { } public static VirtualCore get() { return gCore; }}
懶漢:
public final class VirtualCore {private static VirtualCore gCore = null; private VirtualCore() { } public static synchronized VirtualCore get() { if(gCore == null){ gCore = new VirtualCore(); } return gCore; }}
先來看單例模式原理及要求,保證這個類在記憶體中只有一個物件,那么就不能隨便給別人new,所以必須把建構式改為private,然后整一個公共靜態方法供外部統一獲取實體,
再來看餓漢以及懶漢定義(原理)以及區別:
餓漢:一開始就吧吃的找好(物件new出來),隨時可以吃
懶漢:懶得動,餓了(有需要)再去找吃的(new 物件)
兩者區別在于,餓漢模式拿空間換時間,一開始就把物件生成,在記憶體中占著,懶漢則是按需生成,注意的是,多執行緒訪問的時候,
懶漢可能會因為不同步創建多個物件,所以獲取單例的方法加上 synchronized欄位~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/32508.html
標籤:設計模式
