設計模式之單例模式

2021-08-17 09:27:03 字數 2058 閱讀 7639

demo位址

單例1.概念

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項

2.使用的目的

單例模式可以有效的控制物件的建立(保證只有乙個物件),節約記憶體開銷,提高效率(效能),提高資源使用率。

3.特點

1)私有化構造方法

2)提供靜態方法來提供當前類的物件

3)物件只有乙個

4)確保在序列化和反序列化的過程中是同乙個物件

5)單例類不允許被繼承

常用單例模式種類

1.惡漢式

特點:類建立的同時例項化物件 不管有沒有用到該類的物件

public

class singleton

public

static singleton getinstance()

}

2.懶漢式

特點:類建立的同時不例項化,需要的時候在建立

public

class singleton

public

static singleton getinstance()

return instance;

}}

3.雙重校驗

特點:類建立的同時不建立物件,用到的時候雙重檢查,並且加鎖保證了執行緒安全

3.1雙重校驗原始版

private

static singleton instance;

private

singleton()

public

static singleton getinstance() }}

return instance;

}}

3.2雙重校驗改進版

//分析編譯器編譯過程

//singleton instance = new singleton()

//這句**的意義是例項化乙個物件

// 那麼他的執行順序是 new 開闢空間(分配記憶體)(1)–> 呼叫建構函式 初始化引數(2)–>將instance 物件 指向這塊記憶體空間(3)

//在jvm 1.5之前 cash 暫存器 順序可能是 1-2-3 有可能是 1-3-2 區別在於 是不是先初始化資料在指向記憶體 還是先指向空記憶體 在初始化

//此時 為了解決這個問題 引入了volatile 。使用沒有進行優化過編譯器或者共享記憶體處理器,正常執行

//volatile含義:去掉虛擬機器優化**到主記憶體回寫順序可能會亂序

private

static

volatile singleton instance;

private

singleton()

public

static singleton getinstance() }}

return instance;

}}

public

class singleton

public

static singleton getinstance()

public

static

class singletonholder

}

5.列舉

特點:列舉高階使用

public

enum singleton

6.集合方法-物件管理

特點:建立乙個單例類的同時 建立乙個物件管理類,物件管理類中維護乙個map,保證了物件只有乙個

public

class singleton

public

class objectmanager

public

void

putobject(string key,singleton singleton)

}}

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...