JAVA設計模式之 單例模式【Singleton Pattern】

一、概述

    確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱爲單例類,它提供全局訪問的方法。單例模式是一種對象創建型模式。


二、適用場景

    系統/應用只需要一個實例對象,確保對象的唯一性。


三、UML類圖

    

四、參與者

    Singleton(單例類):在單例類的內部實現只生成一個實例,同時它提供一個靜態的getInstance()工廠方法,讓客戶可以訪問它的唯一實例;爲了防止在外部對其實例化,將其構造函數設計爲私有;在單例類內部定義了一個Singleton類型的靜態對象,作爲外部共享的唯一實例。


五、用例學習

單例模式兩種不同的實現方式:

    1、餓漢式單例模式:

/**
 * 單例類:餓漢式單例模式
 * @author  [email protected]
 *
 */
public class EagerSingleton {
	/** 定義私有靜態變量  類加載的時候就已經創建了單例對象 */
	private static final EagerSingleton instance = new EagerSingleton();
	
	/**
	 * 私有構造函數  只能被自身調用實例化
	 */
	private EagerSingleton(){
		
	}
	
	/**
	 * 獲取單例實例對象
	 * @return
	 */
	public static EagerSingleton getInstance(){
		return instance;
	}

}

    2、懶漢式單例模式:

/**
 * 單例模式一:懶漢式單例模式
 * @author  [email protected]
 *
 */
public class LazySingleton {
	/** 私有靜態成員變量 存儲唯一實例  */
	private static LazySingleton instance;
	
	/**
	 * 私有構造函數 只能被自身調用實例化
	 */
	private LazySingleton() { 
		
	}
	
	/**
	 * 獲取單例實例對象
	 * @return
	 */
	public synchronized static LazySingleton getInstance(){
		if (instance == null){
			instance = new LazySingleton();
		}
		return instance;
	}

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章