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);
}
}