單例模式中的「餓漢」和「懶漢」的深入分析

2021-07-23 05:50:01 字數 285 閱讀 2421

通常人們都會這樣說:「餓漢」式單例在類載入的時候就要建立物件,所以在類載入時的效能開銷大,而「懶漢」式單例在需要的時候才建立物件,因此類載入時的效能開銷小。事實上這句話並不完全正確,原因如下:

1.對於這兩種模式,當我們只是呼叫其中的getinstance()方法獲取單例時,這兩種模式在效能開銷上一樣,因為一旦呼叫此方法,類就會被載入,而無論是「餓漢」還是「懶漢」此時都需要建立物件,所以這種請路況下是沒有區別的。

2.如果單例類還有其他的業務功能,當呼叫的方法不是getinstance()方法時,這是文章開頭所說的才正確。

單例模式的餓漢和懶漢

單例模式就是要確保類在記憶體中只有乙個物件,該例項必須自動建立類,並且對外提供。優點 在系統記憶體中只存在乙個物件,一次可以節約系統資源,對於一些需要頻繁建立和銷毀的物件單例模式無疑可以提高系統的效能。缺點 1.沒有抽象層,因此擴充套件很難。2.指責過重,在一定程式上違背了單一職責。餓漢式和懶漢式的...

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

單例模式 是一種常用的軟體設計模式,在它的核心結構中值包含乙個被稱為單例的特殊類。乙個類只有乙個例項,即乙個類只有乙個物件例項。餓漢單例模式 public class singletondemo5 private singletondemo5 public static final singleto...

單例模式 餓漢和懶漢模式

一 單例模式定義 單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,執行緒池 快取 日誌物件 對話方塊 印表機 顯示卡的驅動程式物件常被設計成單例。這些應用都或多或少具有資源管理器的功能。每台計算機可以有若干個印表機,但只能有乙個printer spooler,...