從零雙排學java之單例設計模式

單例設計模式

核心思想:在程序運行的過程當中,該類的對象保持有且只有一個的狀態

單例分兩種:懶漢式和餓漢式

單例需要滿足的條件

1.不讓外界創建這個對象即(構造方法需要私有化)

2.在類的內部來創建這個對象即(讓這個對象只創建一次)

3.需要給外部提供一個訪問可以獲得該對象的方法即(提供一個get方法)

懶漢式代碼:

/懶漢式(不完整 線程安全問題  雙鎖控制)   在類被加載的時候 不會去創建對象  只有當你
//調用了獲取該類的方法時  纔會創建該類對象
class SingleL{
	//聲明一個對象的引用
	private static SingleL singleL=null;
	//構造方法私有化
	private SingleL() {
		
	}
	//獲取對象的方法
	public  static SingleL getInstance() {
		//判斷  當這個對象不存在的時候在創建
		if(singleL==null) {
			singleL=new SingleL();
		}
		 
		return singleL;
	}

餓漢式代碼:

//餓漢式(只要該類 被加載 就會在方法區的 靜態區中 創建本類對象)
class SingleE{
	//聲明一個本類的對象
	private static SingleE singleE=new SingleE();
	//構造方法私有化
	private SingleE() {
		
	}
	//對外提供一個訪問的方法
	public static SingleE getInstance() {
		return singleE;
	}
}

實現的結果:打印了兩次,爲了測試單例是否只能被創建一個對象

//打印獲取單例對象		  兩者打印的內容是一樣的,說明兩個是同一個對象
		System.out.println(SingleE.getInstance());
		System.out.println(SingleE.getInstance());
		System.out.println("-------------------");
		//打印懶漢模式對象
		System.out.println(SingleL.getInstance());
		System.out.println(SingleL.getInstance());

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