<aside> 💡 하나의 인스턴스를 오직 하나만 가지는 클래스

</aside>

public static void main(String[] args) {
        Setting setting1 = new Setting();
        Setting setting2 = new Setting();

        System.out.println(setting1!=setting2);
    }

다른 것을 확인 할 수 있다.

싱글톤은 절대 new로 인스턴스를 만들면 싱글톤 패턴에 어긋나기 때문에 사용하면 안된다.

밖에서 Setting에 대한 값을 사용하지 못하게 하려면

private Setting(){}

생성자를 만들면 해당위에 있는 코드는 생성을 하지 못한다.

public class Setting {

    private Setting(){}

    public static Setting getInstance(){
        return new Setting();
    }

}

하나의 인스턴스를 가져와 반환을 해주면 하나의 인스턴스로 여러개를 사용할수있다.

public static void main(String[] args) {
        Setting setting1 = Setting.getInstance();
        Setting setting2 = Setting.getInstance();
        System.out.println(setting1!=setting2);
    }

하지만 이렇게 사용하면 인스턴스를 두개 사용하는것과 마찬가지로 하나만 사용하게 해야한다.

public class Setting {
    //2.인스턴스를 담을 클래스변수를 하나 선언
    private static Setting instance;

    //1. 생성자를 사용못하게 막아놓고
    private Setting() {
    }

    //3. 하나의 인스턴스를 가지게하는 스태틱 메서드 작성
    public static Setting getInstance() {
        if (instance == null) {
            instance = new Setting();
        }

        return instance;
    }

}

false