設計模式-單例模式-餓漢式單例和懶漢式單例
阿新 • • 發佈:2019-01-05
單例模式(Singleton pattern)一個在設計模式中比較簡單的模式,我們常說的餓漢式和懶漢式是最常舉例的兩種寫法。
如下
餓漢式:
public class Singleton {
private static final Singleton singleton = new Singleton();
//限制產生多個物件
private Singleton(){}
//獲取例項物件
public static Singleton getSingleton(){
return singleton;
}
}
懶漢式:
public class Singleton { private static Singleton singleton = null; //限制產生多個物件 private Singleton(){} //獲取例項物件 public static Singleton getSingleton(){ if(singleton == null){ singleton = new Singleton(); } return singleton; } }
區別:懶漢式單例在低併發的情況下應該不會出現問題,但是系統壓力增大會有執行緒安全的問題。通常做法是在getSingleton()加上
synchronized關鍵字也可以在該方法內增加synchronized來實現。在這裡推薦使用第一種單例寫法即餓漢式單例,這種寫法不考慮執行緒安全問題,類載入的時候就產生了例項物件,後面用之取之即可。