1. 程式人生 > >設計模式-單例模式-餓漢式單例和懶漢式單例

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

單例模式(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來實現。在這裡推薦使用第一種單例寫法即餓漢式單例,這種寫法不考慮執行緒安全問題,類載入的時候就產生了例項物件,後面用之取之即可。