單例設計模式

2021-10-24 13:38:11 字數 1564 閱讀 7382

單例模式 = 私有的構造方法 + 私有靜態的成員變數 + 乙個公有的物件返回方法

首先,第一種

就是在定義私有靜態的成員變數的時候,就直接將物件new出來

//餓漢式

//私有靜態的成員變數

private

final

static singleton instance =

newsingleton()

;//私有的構造方法

private

singleton()

public singleton getinstance()

然後是第二種

這種方法有乙個執行緒安全的問題

首先看一種執行緒不安全的情況

//定義靜態的成員變數,但不直接new出來

private

static singleton instance =null;

//私有的構造方法

private

singleton()

public singleton getinstance()

return instance;

}在getinstance()方法上加上synchronized關鍵字,這樣就可以達到執行緒安全的效果.

//懶漢式(加鎖可用)

//定義靜態的成員變數,但不直接new出來

private

static singleton instance =null;

//私有的構造方法

private

singleton()

public

synchronized singleton getinstance()

return instance;

}

保證了同一時刻只能有乙個執行緒訪問並獲得例項,但是缺點也很明顯,因為synchronized是修飾整個方法,每個執行緒訪問都要進行同步,而其實這個方法只執行一次例項化**就夠了,每次都同步方法顯然效率低下,為了改進這種寫法,就有了下面的雙重檢查懶漢式。

//雙重檢查懶漢式

//定義靜態的成員變數,但不直接new出來

private

static singleton instance = null;

//私有的構造方法

private

singleton()

//公有的獲取物件的方法

public singleton getinstace()

}}return instance;

}

這是很多開發者推薦的一種寫法,這種靜態內部類方式在singleton類被裝載時並不會立即例項化,而是在需要例項化時,呼叫getinstance方法,才會裝載singletoninstance類,從而完成物件的例項化。

同時,因為類的靜態屬性只會在第一次載入類的時候初始化,也就保證了singletoninstance中的物件只會被例項化一次,並且這個過程也是執行緒安全的。

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...