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


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM