單例模式學習

2021-06-26 05:19:32 字數 946 閱讀 4811

」通常情況下我們可以讓乙個全域性變數使得乙個物件被訪問,但不能防止你例項化多個物件,乙個最好的方法就是,讓類自身負責儲存他的唯一例項。這個類可以保證沒有其他例項可以被建立,並且他可以提供乙個訪問該例項的方法。「

一、經典單例

public class singleton

public static singleton getinstance()

return instance;

}}

singleton類,定義乙個getinstance()操作,允許客戶訪問他的唯一例項。

說明:1.構造方法為private這樣就保證了外界通過new來建立這個類的例項的可能;

2.因為靜態變數的生命週期和整個應用程式的生命週期是一樣的,故定義乙個private的靜態變數來儲存唯一例項。

二、多執行緒下的單例

多執行緒同時訪問singletion類呼叫getinstance()操作時候會可能建立多個例項,對待這種情況我們需要加鎖處理

public class singleton

public static singleton getinstance()}}

return instance;

}}

說明:1.外層if()保證只有在例項未被建立的時候在加鎖處理;

2.內層if()確保例項不被重複建立

三、靜態初始化單例(餓漢模式)

public sealed class singleton

public static singleton getinstance()

}

說明 1.sealed 阻止其他類繼承singleton防止增加例項

2.readonly修飾instance 意味著類一載入就例項化物件,這樣就由公共語言執行庫負責變數初始化,我們無須考慮安全問題

學習單例模式

1 單例模式是怎樣產生的?當想要讓乙個定義類只能例項化乙個物件,則不能對外提供public的構造方法,而是要把構造方法定義為private的,這樣就可以讓定義類自己控制類的例項化。同時,也要對外提供乙個public的方法,用來得到定義類的例項。當然,在定義類的內部需要初始化來建立自身的乙個例項 保證...

單例模式學習

單例模式實現 一.實現雙重校驗鎖 public class singleton public static singleton getsingleton return singleton 特點 通過關鍵字synchronized保證高併發下,初始化物件為單例。缺點效能較差,物件屬性需要volatil...

單例模式學習

注 學習內容來自劉偉老師的技術部落格 史上最全的設計模式 這個系列的部落格深入淺出,引人入勝,值得學習。1.什麼是單例模式?單例模式 singleton pattern 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全域性訪問的方法。單例模式是一種物件建立...