設計模式 02 單例模式

2021-09-26 09:49:56 字數 1189 閱讀 1233

參考:

需要某個類只保留乙個物件,如資料庫連線、網路連線、執行緒池等。

只能有乙個例項

單例類必須建立自己的唯一例項

單列類向其他物件提供這一例項

單例可以繼承與被繼承,方法可以重寫。靜態類不行

單例產生的物件常駐記憶體。靜態類物件執行後會被釋放,被gc清理

單例模式可以延遲載入,靜態類在第一次執行時被初始化。

需要維持特定狀態時使用單例模式,僅用於全域性訪問時使用靜態類。

懶漢模式

餓漢模式:

直接在執行這個類的時候進行一次loading,之後直接訪問

沒有起到lazy 載入的效果

與靜態類相比:只多了乙個記憶體常駐

靜態類內部載入:

靜態內部類不會在單例載入時就載入,達到了類似懶漢模式的效果

執行緒安全

列舉方法:

自由序列化

只有乙個例項

執行緒安全

/** 一、餓漢式

* 1.沒有起到lazy loading的效果

* 2.只比靜態類多個常駐記憶體的作用

* */

class hungrysingleton

public static hungrysingleton gethungrysingleton()

}/***

* 二、懶漢式

*/class lazysingleton

// 考慮執行緒安全,可能多個訪問者訪問時,加鎖

public static synchronized lazysingleton getlazy()

return lazy;

}}/**靜態類內部載入*/

class singletonstaticclass

public singletonstaticclass()

//不會再單例載入時就載入,呼叫該方法時才載入,達到了類似懶漢模式的效果

public static singletonstaticclass getinstance()

}/**列舉方法*/

class resource

enum singletonenum

public resource getinstance()

} public static void main(string args)

設計模式 02 單例模式

1 餓漢模式 宣告靜態物件時,已經初始化。public class singleton public static singleton getinstance 2 懶漢模式 第一次呼叫getinstance時進行初始化。缺點 每次呼叫getinstance都進行同步,造成不必要的同步開銷。publi...

設計模式 02 單例模式

餓漢式 靜態 塊 懶漢式 執行緒不安全 懶漢式 執行緒安全,同步方法 懶漢式 執行緒不安全,同步 塊 雙重檢查 推薦 靜態內部類 推薦 列舉注意事項和細節說明 所謂的單例設計模式,就是採取一定的方法,保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法 靜態方...

設計模式 02 單例模式

描述 singleton 模式要求乙個類有且僅有乙個例項,並且提供了乙個全域性的訪問點 方式1 sealed class singleton 這種方式不能實現延遲初始化 呼叫時才進行初始化 它在編譯時就初始化出了乙個例項,sealed保證類不能被繼承。方式二 sealed class singlet...