java單例理解

試想下有這麼一個場景,有一個類,整個項目都會用得到,使用的概率很頻繁,你還會每用一次就new一次嗎?這樣做不是不可以,但是會很耗內存,這時就要想到用單例了。

單例有如下兩個特點:

1.整個項目只有一個實例。

2.這個實例在項目中使用概率很高

單例又分爲兩種單例:

1.飽漢式單例(使用到了靜態代碼塊,在類load進內存時,就加載了實例)

2.餓漢式單例(在創建實例時,當原來的對象爲null則重新new個,否則還是用已存在的實例)

一般用於工具類比較多,我們直接看代碼如何實現的吧!

/**
 * 飽漢式單例
 */

public class SingleInstance {
	

	static{
		instance = new SingleInstance();
	}
	
	private static SingleInstance instance;
	//將構造函數私有化,使外界無法通過構造函數獲得對象
	private SingleInstance() {
		
	}
	
	public static SingleInstance getInstance() {
		return instance;
	}

}

/**
 * 餓漢式單例
 *
 */
public class SingleInstance2 {
	
	private static SingleInstance2 instance2;
	
	private SingleInstance2(){}
	
	public static SingleInstance2 getInstance2() {
		
		if (instance2 == null) {
			instance2 = new SingleInstance2();
		}
		return instance2;
	}
		
}
單例的優點:

1.避免類的重複創建

2.節約內存

3.避免多個實例引起程序邏輯錯誤的場合

以上是個人對單例的理解,如果有理解不當的地方,還請指出,一同進步,多謝了!



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