構造方法私有化,只有自己的類能訪問,在自己的類中提供乙個方法訪問該例項物件。
單例類的所有例項化得到的都是相同的乙個例項
系統記憶體中只存在乙個物件,因此可以節約系統資源
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物件在記憶體堆...