public class Singleton {
private static Singleton instance;
public Singleton() {}; //構造沒有私有化
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
因為構造沒有私有化,通過 new Singleton 創建多個實例了,而單例模式要求只創建一個實例。
如果私有化了構造,在使用new Singleton的時候就會報異常。
public class Test {
public static void main(String[] args) {
//假如構造函數為public時
Singleton singleton = new Singleton();
System.out.println(singleton);
Singleton singleton1 = new Singleton();
System.out.println(singleton1);
//如果構造函數為私有化時只能通過getInstance()方法獲取實例
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton2);
}
}
