單例模式

我的理解,單例模式就是一個類只能創建一個對象。例如網頁的訪問人數是很多。我們這時候只需要創建一個對象就可以了,因爲網頁對所以的人都是同樣的。

實現單例,需要遵循一些原則:

     首先必須先把構造給私有化。(如果不把構造私有化,就可能出現多個對象,這樣就不可能出現單例),但是私有了構造以後,就沒有了對象。很顯然的一個解決思路放在我們面前。在本類中構造一個對象。返回對象的一個引用。由於main方法是static的,所以在main方法中調用創建對象的那個方法也必須要用static來修飾。

在類中私有了構造,然後創建本類的一個方法,在方法中創建一個本類的對象其次,在寫有main方法的類中運用類名.來調用這個對象,就實現了單例模式。
單例設計模式的第一種寫法

public class Singleton {
	private static Singleton s;
	private Singleton(){ //私有構造
		System.out.println("aaaaaaa");
	}
	public static Singleton getInstance(){
		if(s == null){
			 s = new Singleton(); //用本類的一個方法創建一個對象
		}
		return s;
	}
}
package day08.tarena.com;

public class Main {
	public static void main(String[] args){
		Singleton s1 = Singleton.getInstance();   //利用類名.來調用在私有了構造類的類中的對象
		Singleton s2 = Singleton.getInstance();
		System.out.println(s1 == s2);
	}
}


第二種寫法

public class Singleton {
	private static Singleton s = new Singleton();
	private Singleton(){ //私有構造
		System.out.println("aaaaaaa");
	}
	public static Singleton getInstance(){
		return s;
	}
}
package day08.tarena.com;

public class Main {
	public static void main(String[] args){
		Singleton s1 = Singleton.getInstance();   //利用類名.來調用在私有了構造類的類中的對象
		Singleton s2 = Singleton.getInstance();
		System.out.println(s1 == s2);
	}
}


實現單例,必須保證對象只能創建一次。

發佈了76 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章