Java設計模式 單利模式

2021-09-18 01:14:24 字數 966 閱讀 2587

設計模式:是一套被反覆使用,多數人知曉,經過分類編碼目的,**設計經驗的總結。

目的:使用設計模式是為了提高**重用性,讓**更容易讓人理解,並保證**的可靠性。

單利模式:顧名思義就是只能有乙個例項,不能再出現第二個,就如同地球上沒有兩片一模一樣的樹葉一樣。在此處即,乙個類只能有乙個實力,且整個專案都能訪問該例項。

兩大類

餓漢模式

public class singleton

public static singleton getinstance()

}

由於instance的初始化是在類載入時進行的,類載入是由classloader來實現的,如果初始化太早,就會造成資源浪費。當然,如果所需的單利占用的資源很少,並且也不依賴其他資料,那麼這種實現方式也是很好的。

懶漢模式

public class singleton()

public static singleton getinstance()}}

return instance;

}}

上述**中使用雙重檢查,並給instance的宣告加上volatile關鍵字。

第乙個if(instance == null),其實是為了解決一進入**就加鎖所出現的效率問題,只有instance為null 的時候,才進入synchronized 的**大大減少了機率;

第二個if(instance == null),則是為了防止可能出現多個例項的情況。

另外,為什麼要給instance的宣告加上volatile關鍵字,是為了防止指令的重排序。

關於原子操作、指令重排、volatile、synchronized的概念請參照另一篇 

java設計模式 單利模式

單利模式 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全 局訪問的方法。單例模式是一種物件建立型模式。三個要點 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。使用方法 在單例類的內部實現只生成乙...

java設計模式之單利模式

在我們做開發的時候,有些類的例項每次都new乙個出來是沒有必要的,因為它太占用記憶體咯。因此,單利模式有了它的用武之地了。最簡單的單利模式如下 private static logcathelper instance null public static logcathelper getinstan...

Java設計模式(三) 單利模式

單利模式分為餓漢式和懶漢式,但無論是哪種模式,都是對類的物件來說的,建立類的乙個物件。餓漢式 類載入時就建立物件。懶漢式 需要的時候才建立物件。建立的步驟基本一致 私有化構造方法 定義乙個變數,並私有化 對外提供乙個可以公開獲取物件的方法 public class teacher private s...