設計模式 單例模式(一)懶漢式和餓漢式

2022-08-19 12:39:10 字數 1540 閱讀 1620

單例模式:

是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項。

單例模式的要點有三個:

(1)是某個類只能有乙個例項;

(2)是它必須自行建立這個例項;

(3)是它必須自行向整個系統提供這個例項。

從具體實現角度來說,就是以下三點:

(1)單例模式的類只提供私有的建構函式

(2)類定義中含有乙個該類的靜態私有物件

(3)該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。

(一)懶漢式

懶漢式的特點是延遲載入,比如配置檔案,採用懶漢式的方法,配置檔案的例項直到用到的時候才會載入。

**實現:

package com.jn.pro;

/* * 懶漢式

*/public class singletonclass

/** 定義乙個公有方法,判斷例項是否已經存在,

* 存在則返回例項,否則新建乙個再返回

*/public static synchronized singletonclass getinstance()

return instance;

} }

測試類:

package com.jn.pro;

/* * 懶漢式測試類

*/public class singletonclasstest

} public static void main(string args)

}

執行結果:

第一次取得例項sc1

第二次取得例項sc2

sc1和sc2是同乙個例項(懶漢式)

(二)餓漢式

餓漢式的特點是一開始就載入了,如果說懶漢式是「時間換空間」,那麼餓漢式就是「空間換時間」,因為一開始就建立了例項,所以每次用到之後直接返回就好了。

**實現:

package com.jn.pro;

/* * 餓漢式

*/public class singletonclass1

public static singletonclass1 getinstance()

}

測試類:

package com.jn.pro;

/* * 餓漢式測試類

*/public class singletonclasstest1

} public static void main(string args)

}

執行結果:

第一次取得例項

第二次取得例項

sc1和sc2是同乙個例項(餓漢式)

注:餓漢式每次呼叫的時候不用做建立,直接返回已經建立好的例項。這樣雖然節省了時間,但是卻占用了空間,例項本身為static的,會一直在記憶體中帶著。

設計模式 單例模式 餓漢式和懶漢式

單例模式 單例模式要求類能夠有返回物件乙個引用 同乙個 和乙個獲得該例項的方法 必須是靜態方法,通常使用getinstance這個名稱 單例的實現主要是通過以下步驟 1 將構造方法私有化,使其不能在類的外部通過new關鍵字例項化該類物件。2 在該類內部產生乙個唯一的例項化物件,並且將其封裝為priv...

設計模式 單例模式 餓漢式,懶漢式

餓漢式 將物件的實現提前準備好,物件指向的記憶體只能有乙個。public class singlection1 餓漢式單例實現 將物件的實現提前準備好 private static final singlection1 single1 new singlection1 靜態工廠 public sta...

設計模式 單例模式 餓漢式單例和懶漢式單例

單例模式 singleton pattern 乙個在設計模式中比較簡單的模式,我們常說的餓漢式和懶漢式是最常舉例的兩種寫法。如下餓漢式 public class singleton 獲取例項物件 public static singleton getsingleton 懶漢式 public clas...