乙個類永遠只有乙個物件存在。
方式1(餓漢式 - 執行緒安全)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 餓漢式:執行緒安全
* 類載入到記憶體後,就例項化乙個單例,jvm保證執行緒安全
* 簡單易用,推薦使用!
* 唯一缺點:不管用到與否,類裝載時就完成例項化 */
public
class
singleton01
public
static
singleton01 getinstance()
/*** 通過檢視 hashcode值 是否一致,判斷是否執行緒安全
* @param
args
*/public
static
void
main(string args)
}}
方式2(懶漢式 - 執行緒不安全)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 懶漢式:執行緒不安全 */
public
class
singleton02
public
static
singleton02 getinstance()
/*** 通過檢視 hashcode值 是否一致,判斷是否執行緒安全
* @param
args
*/public
static
void
main(string args)
}}
方式3(懶漢式 - 執行緒安全 - 加鎖 - 效率下降)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 懶漢式:執行緒安全(加鎖實現,但是效率下降) */
public
class
singleton03
public
static
synchronized
singleton03 getinstance()
return
instance;
}/*** 通過檢視 hashcode值 是否一致,判斷是否執行緒安全
* @param
args
*/public
static
void
main(string args)
}}
方式4(懶漢式 - 執行緒安全 - dcl - 效率提公升 - 較完美的實現方式)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 懶漢式:執行緒安全
* dcl: double check loading
* 較為完美的單例寫法 */
public
class
singleton04
public
static
singleton04 getinstance() }}
return
instance;
}/*** 通過檢視 hashcode值 是否一致,判斷是否執行緒安全
* @param
args
*/public
static
void
main(string args)
}}
方式5(內部類實現 - 執行緒安全 - 懶載入 - 較完美的實現方式)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 靜態內部類
* jvm 保證單例,且執行緒安全,不用加鎖
* 載入外部類時不會載入內部類,變相實現了懶載入(lazy loading)
* 較為完美的單例寫法 */
public
class
singleton05
private
static
class
singleton05holder
public
static
singleton05 getinstance()
/*** 通過檢視 hashcode值 是否一致,判斷是否執行緒安全
* @param
args
*/public
static
void
main(string args)
}}
方式6(列舉類實現 - 執行緒安全 - 防止反序列化 - 最完美的實現方式)
packagemirale.luna.design.patterns.singleton;
/*** created by miracle luna on 2020/12/15
* * 列舉單例
* 不僅實現了執行緒同步,而且防止了反序列化
* 最完美的單例寫法 */
public
enum
singleton06
}}
23種設計模式(一)單例模式
概念 優點 缺點 實現單例模式最關鍵的步驟就是構造器私有 單例模式是最常見的一種設計模式 它有以下特點 1 單例類只能有乙個例項 2 單例類必須自己建立自己的唯一例項 3 單例類必須給所有其他對線提供這一例項 餓漢式單例模式 餓漢式的特點就在於 在類建立的同時就建立好了乙個靜態的物件供系統使用 以後...
23種設計模式 單例模式
某些情況,如 執行緒池,乙個專案中匯流排程數量以及生命週期,可能需要統一控制 如果執行緒池自身可建立多個例項,那麼就無法統一控制,此時,只要能控制線程池物件的數量為乙個,那麼就可以實現統一控制的目標 注意 現實中真正使用純的單例模式並不多 如 spring bean 通過配置來決定是否使用單例 執行...
單例模式(23種設計模式)
單例模式 餓漢模式 class singletondemo public static singletondemo gets 懶漢模式 class singletondemo1 public static singletondemo1 gets return instance 單例模式,懶漢式,執行...