Java設計模式之建立型模式 單例模式

2021-08-02 12:42:12 字數 1302 閱讀 3895

一:懶漢式

public

class singleton

public

static singleton instance()

return singleton;

}}

為什麼叫懶漢式,我們可以看到私有屬性並沒有在宣告的時候例項化,而是在被呼叫的時候才,故稱作為懶漢式。

二:餓漢式

public

class singleton

public

static singleton instance()

}

餓漢式跟懶漢式的區別就在於,餓漢式在類初始化時直接建立例項。

三:懶漢式執行緒安全

public

class singleton

public

static synchronized singleton instance()

return singleton;

}}

在方法上加上synchronized 關鍵字可以時我們的單例模式執行緒安全,但是這是如果有三個使用者abc同時訪問,如果a先訪問了該資源,那麼bc只能等待,只有當a釋放資源後才能供b,c訪問。這樣就降低了效率。所以下面我們引入雙重校驗鎖來提公升效率。

四:雙重校驗鎖(提公升效率)

public

class singleton

public

static singleton instance()}}

return singleton;

}}

我們進入方法後,並沒有直接的加上synchronized,而是先判斷singleton是否為空,只有為空的時候,接著我們才鎖定資源,當使用者呼叫完之後才釋放資源。那麼我們比較一下上面的寫法,同樣使用者a,b,c進來,比如同時訪問,首先判斷singleton是否為空,第一次自然都為空,a,b,c都去執行下面的**,這是a的網速比b,c快,a先獲得這麼資源,b,c只能等。當a訪問完之後,釋放資源,b,c進來,再一次判斷singleton是否為空,這時singleton已經被a例項化,b,c直接返回例項化的物件,不需要在去作例項化的操作。效率明顯提公升了。

總結

單例模式為我們提供了乙個類的單例,餓漢式本身就是執行緒安全的,因為我們的方法中直接提供了例項化好後的物件。對於懶漢式而言,執行緒則是不安全的,因為在判空的時候,有可能多個使用者同時進來,會造成例項化多次的情況,所有也提供了執行緒安全的單例模式。

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

在單例模式下,乙個類負責建立自己的例項,且這個類只能建立乙個唯一的例項物件,外部可以直接訪問這個例項物件,單例模式常用於物件的建立。建立單例模式時,建構函式是私有的這樣才能保障,在外部無法建立類例項化物件。單列模式的優點 1 保證在記憶體中只有乙個當前類的例項化物件,減小記憶體的開銷 2 避免資源的...

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

單例模式,顧名思義就是只存在乙個類的例項,避免多例項造成的記憶體浪費。public class singletonpattern private static singletonpattern singleton new singletonpattern public static singleto...

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

簡介 單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,任務管理器 執行緒池 快取 日誌物件 對話方塊 印表機 顯示卡的驅動程式物件常被設計成單例。在專案當中,系統啟動讀取配置檔案就需要單例保證配置的一致性。要點與實現要點 實現實現單例模式方式 餓漢式 餓漢式單...