設計模式 單列模式

2021-10-05 11:25:10 字數 2425 閱讀 7035

構造方法私有化,只有自己的類能訪問,在自己的類中提供乙個方法訪問該例項物件。

單例類的所有例項化得到的都是相同的乙個例項

系統記憶體中只存在乙個物件,因此可以節約系統資源

package com.lb;

/** * @author lb

* @remarks 餓漢式:類初始化時,會立即載入該物件,執行緒天生安全,呼叫效率高

* @date 2020/04/21 22:57

*/public

class

singletondemo01

public

static singletondemo01 getinstance()

}

測試:

package com.lb;

/** * @author lb

* @remarks

* @date 2020/04/21 22:57

*/public

class

demo

}

package com.lb;

/** * @author lb

* @remarks 懶漢式 類初始化時,不會初始化該物件,真正需要使用的時候才會建立該物件,具備懶載入功能。

* @date 2020/04/21 23:01

*/public

class

singletondemo02

public

synchronized

static singletondemo02 getinstance()

return singletondemo02;

}}

測試:

* @remarks 靜態內部類方式

*  優勢:兼顧了懶漢模式的記憶體優化(使用時才初始化)以及餓漢模式的安全性(不會被反射入侵)。

*  劣勢:需要兩個類去做到這一點,雖然不會建立靜態內部類的物件,但是其 class 物件還是會被建立,而且是屬於永久帶的物件。

* @date 2020/04/25 22:21

*/public

class

singletondemo03

private

singletondemo03()

// 方法沒有同步

public

static singletondemo03 getinstance()

}測試:

* @remarks 雙重檢測鎖方式 (因為jvm本質重排序的原因,可能會初始化多次,不推薦使用)

* @date 2020/04/25 23:41

*/public

class

singletondemo04

public

static singletondemo04 getinstance()

}}return singletondemo04;

}}測試:

* @remarks 單例防止反射漏洞攻擊

* @date 2020/04/26 22:13

*/public

class

singletondemo05

else

}public

static singletondemo05 getinstance()

return singletondemo05;

}}

設計模式 單列模式

何為設計模式呢?簡單的說就是能重複利用的解決方案,當碰到a專案也出現這種情況,b專案也出現這種情況 那麼是否能把這懂實現功能抽象出來,形成一種解決方案.單列模式 顧名思義就是乙個例項 即乙個物件只能初始化一次 作用 減少開闢記憶體空間,節約記憶體開銷 class program 因為a物件在記憶體堆...

設計模式 單列模式

原文 單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候...

設計模式 單列模式

何為設計模式呢?簡單的說就是能重複利用的解決方案,當碰到a專案也出現這種情況,b專案也出現這種情況 那麼是否能把這懂實現功能抽象出來,形成一種解決方案.單列模式 顧名思義就是乙個例項 即乙個物件只能初始化一次 作用 減少開闢記憶體空間,節約記憶體開銷 class program 因為a物件在記憶體堆...