設計模式 單例模式 關於餓漢式和懶漢式

2021-09-27 04:40:48 字數 836 閱讀 4209

單例模式是比較常見的一種設計模式,目的是保證乙個類只能有乙個例項,而且自行例項化並向整個系統提供這個例項,避免頻繁建立物件,節約記憶體

載入(classloader)機制一般遵從下面的載入順序

如果類還沒有被載入:

先執行父類的靜態**塊和靜態變數初始化,靜態**塊和靜態變數的執行順序跟****現的順序有關。

執行子類的靜態**塊和靜態變數初始化。

執行父類的例項變數初始化

執行父類的建構函式

執行子類的例項變數初始化

執行子類的建構函式

同時,載入類的過程是執行緒私有的,別的執行緒無法進入。

如果類已經被載入:

靜態**塊和靜態變數不在重複執行,再建立類物件時,只執行與例項相關的變數初始化和構造方法

在程式編寫上,一般將單例模式分為兩種,分別是餓漢式和懶漢式,

餓漢式:在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。

懶漢式:在類載入時不初始化,等到第一次被使用時才初始化

優點

單例類只有乙個例項,節省了記憶體資源,對於一些需要頻繁建立銷毀的物件,使用單例模式可以提高系統效能;

單例模式可以在系統設定全域性的訪問點,優化和共享資料,例如前面說的web應用的頁面計數器就可以用單例模式實現計數值的儲存。

缺點

單例模式一般沒有介面,擴充套件的話除了修改**基本上沒有其他途徑

設計模式 單例模式 餓漢式單例和懶漢式單例

單例模式 singleton pattern 乙個在設計模式中比較簡單的模式,我們常說的餓漢式和懶漢式是最常舉例的兩種寫法。如下餓漢式 public class singleton 獲取例項物件 public static singleton getsingleton 懶漢式 public clas...

設計模式 單例模式 餓漢式和懶漢式

單例模式 單例模式要求類能夠有返回物件乙個引用 同乙個 和乙個獲得該例項的方法 必須是靜態方法,通常使用getinstance這個名稱 單例的實現主要是通過以下步驟 1 將構造方法私有化,使其不能在類的外部通過new關鍵字例項化該類物件。2 在該類內部產生乙個唯一的例項化物件,並且將其封裝為priv...

設計模式 單例模式 餓漢式,懶漢式

餓漢式 將物件的實現提前準備好,物件指向的記憶體只能有乙個。public class singlection1 餓漢式單例實現 將物件的實現提前準備好 private static final singlection1 single1 new singlection1 靜態工廠 public sta...