单例模式为什么要构造私有化

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

    }
}

参考文章:https://www.yuque.com/gaohanghang/sgrbwh/zgmcf8

posted @ 2021-02-22 10:29  忆尘不散  阅读(975)  评论(0)    收藏  举报