設計模式(單例設計模式)

2022-07-24 12:54:18 字數 1160 閱讀 4704

單例設計模式:

1.什麼是單例設計模式?

在整個應用中,我們保證我們所需要的例項只有乙個。

2.如何實現?

在類載入的階段就例項化乙個靜態變數例項,且將該類的建構函式設定為私有。則不能在建立其他的例項。這樣就能保證只有在整個應用中只有乙個例項。

1

public

class

singletest 6//

用於獲取該例項的靜態方法

7public

static

singletest getinstance()

10 }

view code

3.優化

在上述**中,在該類載入的階段,該例項就會被建立。然後在整個應用過程中,可能都不會用到該單例instance。該方法浪費記憶體。

通過在網上資料的查詢,了解到使用lazy loaded (延遲載入)。**如下

1

public

class

singletest 67

public

static

singletest getinstance()

11return

instance;12}

13 }

在使用getinstance方式時才判斷是否為null,為null則初始化。

4.在3中的**,雖然節省下了記憶體,但是在多執行緒併發下,會出現同時破壞單例模式。

執行緒a:執行完畢第8行的**後,判斷為null。然後切換時間片。

執行緒b:執行到完畢第8行的**後,判斷為null(因為執行緒a還沒有建立物件)。然後切換時間片。

執行緒a:建立乙個例項

執行緒b:建立乙個例項

所以會出現兩個例項,破壞單例模式。

這裡有乙個賊棒的**,來處理該情況

1

public

class

singletest 78

public

static

singletest getinstance()17}

18return

instance;19}

20 }

這樣在獲取例項的時候,先判斷是不是為null,是為null,再進入裡面帶有鎖的判斷。加鎖保證只會有乙個例項被建立

設計模式 單例設計模式

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

設計模式 單例設計模式

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

設計模式 單例設計模式

設計模式是對問題行之有效的解決方案,它其實是一種思想。單例設計模式 解決的問題 可以保證乙個類在記憶體中只能有乙個物件。比如多個程式使用相同的配置資訊物件時,就需要保證物件的唯一性 如何保證唯一性 1 不允許其他程式用new建立類物件 2 在該類中建立乙個本類例項 3 對外提供乙個方法讓其他程式可以...