設計模式筆記 單例模式

2021-10-01 06:31:00 字數 1270 閱讀 6440

在單例模式中,對單例類的所有例項化得到的都是相同的乙個例項

1.餓漢式(靜態初始化)

/**

* @description: 餓漢式(靜態常量);

* 1.執行緒安全

* 2.在類載入的同時已經建立好乙個靜態物件,呼叫時反應速度快

* 在類裝載的時候就完成例項化,沒有達到lazy loading的效果。如果從始至終從未使用過這個例項,則會造成記憶體的浪費

* 一般採用餓漢式(1),若對資源十分在意可以採用靜態內部類(4),不建議採用懶漢式及雙重檢測(2、3)

*/public class singleton

public static singleton getinstance()

}

2.雙重檢測

public class singletondoublecheck   

public static singletondoublecheck getinstance() }}

return inst;

}protected void method()

}

3.靜態內部類

/**

* 餓漢式方式是只要singleton類被裝載就會例項化,沒有lazy-loading的作用,而靜態內部類方式在singleton類被裝載時並不會立即例項化,而是在需要例項化時,呼叫getinstance方法,

* 類的靜態屬性只會在第一次載入類的時候初始化,所以在這裡,jvm幫助我們保證了執行緒的安全性,在類進行初始化時,別的執行緒是無法進入的。

*/public class singletoninner

/**

* 私有的建構函式

*/

private singletoninner() {}

public static singletoninner getinstance()

protected void method()

}

一般用餓漢式(靜態初始化)就能滿足。

1.在spring中,bean可以被定義為兩種模式:prototype(多例)和singleton(單例),spring bean 預設是單例模式,具體實現採用的是單例登錄檔的方式進行實現的

private final mapfactorybeanobjectcache = new concurrenthashmap(16);

2.rocketmq中的mqclientmanager

設計模式筆記 單例模式

單例模式在系統開發時很常見,乙個系統中可能會有多個單例模式的運用!它比全域性變數的好處?1.能控制生成時間,保證初始化順序?2.容易保證執行緒安全 全域性變數需要多執行緒client單獨控制併發,單例在類實現中已經做到,無需client再處理 3.減少函式模組之間的耦合,減少命名衝突,便於管理?可能...

設計模式筆記 單例模式

1 懶漢式 1 執行緒不安全 public class singleton public static singleton getinstance return singleton 缺點 不支援多執行緒。2 執行緒安全 public class singleton public static syn...

設計模式筆記 單例模式

單例模式 保證乙個類只有乙個例項,並提供乙個方法訪問它的全域性訪問點。singleton類,定義乙個 getinstance 方法,允許客戶訪問它的唯一例項。getinstance 是乙個靜態方法,主要負責建立自己的唯一例項。public class singleton public static ...