單例模式為什么要構造私有化


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