Java 單例設計模式

2021-07-11 21:11:25 字數 1276 閱讀 1745

學習自大話設計模式(程杰)

1、單例設計模式:保證記憶體中物件的唯一性,用於僅需要乙個物件的場景

2、單例設計模式實現

2.1:保證物件唯一,即物件不可被外部自由建立,因此將建構函式私有化

2.2:物件不可被外部建立,因此由內部自己建立,再通過外部訪問,獲取建立的例項,此時函式需要公有靜態化

2.3:靜態函式需要呼叫內部建立的例項,因此該例項需要靜態化,為避免外部直接訪問靜態例項,需要將例項私有化。

3、單例模式的兩種形式

3.1、餓漢式:類一載入,例項就已經在記憶體,執行緒安全

class singleinstance

public static getinstance()

}

3.2、懶漢式:延遲載入,類載入時,例項沒有建立在記憶體,當呼叫getinstance()時,例項才建立,非執行緒安全

class singleinstance

public static getinstance()

}

3.3、懶漢式改進版,每次呼叫都需要實現執行緒安全,開銷大

public class singletoninstance

public static synchronized singletoninstance getinstance()

return instance;

}}

3.4、雙重檢測,當instance為空時,才進入執行緒安全區,第二個判斷是否為空,是因為,當有兩個執行緒同時進入第乙個判空,然後其中乙個進入與執行緒安全區,並建立了新的instance,此時如果沒有再次判斷是否為空,則第二個執行緒會再次建立例項。

public class singletoninstance

public static singletoninstance getinstance()

}}

return instance;

}}

3.5、使用靜態內部類,延遲載入,又保證執行緒安全

/**

* 單例模式,使用靜態內部類,執行緒安全(推薦)

*/public class singleton

private static class singletonholder

public static singleton getinstance()

}

java設計模式 單例設計模式

public class main 餓漢式 空間換時間 多執行緒訪問不會建立多個物件 author admin class singleton 2建立本類物件 private static singleton s new singleton 3對外提供公共的訪問方法 public static si...

Java單例設計模式

單例設計模式也有人叫單態,基本上有兩種寫法一種是餓漢式,另外一種是懶漢式。餓漢式就是一開始就建立了例項物件 public class singleton public static singleton getintance 懶漢式是需要的時候才建立 它比較懶 而且會涉及執行緒同步問題,需要增加同步 ...

java 單例設計模式

單例設計模式 保證乙個類在記憶體中只有乙個物件。模式 模式就是解決 一類 問題的固定步驟 模式的概念最早起源於建築行業 建房子的步驟都是一樣子 打地基 澆柱子 蓋樓面 砌牆 封頂 裝修 入住軟體行業中23種設計模式 單例設計模式 模板設計模式 裝飾者設計模式 觀察者設計模式 工廠設計模式單例設計模式...