我的理解,單例模式就是一個類只能創建一個對象。例如網頁的訪問人數是很多。我們這時候只需要創建一個對象就可以了,因爲網頁對所以的人都是同樣的。
實現單例,需要遵循一些原則:
首先必須先把構造給私有化。(如果不把構造私有化,就可能出現多個對象,這樣就不可能出現單例),但是私有了構造以後,就沒有了對象。很顯然的一個解決思路放在我們面前。在本類中構造一個對象。返回對象的一個引用。由於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);
}
}
實現單例,必須保證對象只能創建一次。