設計模式 單例模式 Singleton

2022-03-02 12:33:37 字數 1338 閱讀 8129

模式說明:

保證每乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點(即自行例項化並向整個系統提供這個例項)。

應用場景:

2.如交易匹配類tradematchcore(單個類中需要共享成員變數,多個例項無法做到)

交易匹配類tradematchcore,負責系統交易和外部交易的匹配,呼叫該方法的場景有,a.定時服務 b.客戶端手工呼叫 c.交易成交確認後自動呼叫。

而該類維護了乙個成員變數_maxid,標記上次匹配成功的外部交易的最大id。如果每個呼叫地方都例項化乙個tradematchcore物件,即每個物件都維護了乙個單獨的_maxid值,如果上述三個地方的該值不一致,就會對匹配照成問題。

模式應用:

單例模式有兩種實現方式,一種稱為懶漢式,乙個為餓漢式。

a.懶漢式的實現邏輯為:

在宣告物件例項的時候不著急,會一直等到馬上要使用物件例項的時候才會建立。懶人,總是在迫不得已的時候才會去做這件事情,在裝載物件的時候不會馬上建立物件例項。

class 

lazysingleton

//2.對外公開乙個全域性訪問點(public)

//3.由於外面不能通過new lazysingleton()來呼叫該方法(這樣就違背單例原則),因此將該方法定義為static

public static

lazysingleton getsingleton()

}}

b.餓漢式的實現邏輯為:

class 

hungrysingleton

//2.對外公開乙個全域性訪問點(public)

//3.由於外面不能通過new lazysingleton()來呼叫該方法(這樣就違背單例原則),因此將該方法定義為static

public static

hungrysingleton getsingleton()

}

c.餓漢式和懶漢式的區別為(後續補充順序示意圖)

懶漢式單例模式,體現了延遲載入的思想,即一開始不載入資源或者資料,一直等,等到馬上就要使用這個資源或者資料了,躲不過去了才載入,也稱為lazy load.懶漢式是典型的以時間換空間。

餓漢式在類載入的時候就會建立類例項,不管你用不用,先建立出來,然後每次呼叫的時候就不用再判斷了,節省了允許時間。

餓漢式是典型的以空間換時間。

Java設計模式之單例模式(Singleton)

前言 在總結okhttp的時候,為了管理網路請求使用到了單例模式,晚上實在沒啥狀態了,靜下心來學習總結一下使用頻率最高的設計模式單例模式。單例模式 單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例特點 單例分類 1 懶漢單例 1 非執行緒安全實現 public class...

設計模式 建立型模式 單例模式 Singleton

4種單例模式 單執行緒單例 類class single private static single sin null public static single createinstance return sin 呼叫 console.writeline 單執行緒單例模式 single sin sin...

大話設計模式二十一 單例模式(Singleton)

一.單例模式定義 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。二.結構和說明 singleton負責建立singleton類自己的唯一例項,並提供乙個getinstance方法,讓外部來訪問這個類的唯一例項。三.呼叫示例圖 實現 四.控制例項個數 簡單演示如何擴充套件單例模式,控制例項數...