設計模式:是一套被反覆使用,多數人知曉,經過分類編碼目的,**設計經驗的總結。
目的:使用設計模式是為了提高**重用性,讓**更容易讓人理解,並保證**的可靠性。
單利模式:顧名思義就是只能有乙個例項,不能再出現第二個,就如同地球上沒有兩片一模一樣的樹葉一樣。在此處即,乙個類只能有乙個實力,且整個專案都能訪問該例項。
兩大類:
餓漢模式:
由於instance的初始化是在類載入時進行的,類載入是由classloader來實現的,如果初始化太早,就會造成資源浪費。當然,如果所需的單利占用的資源很少,並且也不依賴其他資料,那麼這種實現方式也是很好的。public class singleton
public static singleton getinstance()
}
懶漢模式:
上述**中使用雙重檢查,並給instance的宣告加上volatile關鍵字。public class singleton()
public static singleton getinstance()}}
return instance;
}}
第乙個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...