記錄

Singleton Pattern(싱글톤 패턴) 본문

IT_Fundamental/디자인 패턴

Singleton Pattern(싱글톤 패턴)

surhommejk 2017. 11. 23. 23:14


Singleton Pattern(싱글톤 패턴)



특정 클래스의 객체가 오직 한 개만 존재하도록 보장하는 패턴이다.



public class SystemSpeaker {

    static private SystemSpeaker instance;
    // 외부에서 호출 안되고 하나만 있게 하기 위해서
    // private이 있고 static이 있는 것

    private int volume;

    private SystemSpeaker() {
        volume = 5;
    };

    public static SystemSpeaker getInstance() {
        // 객체 생성 없이 getInstance를 사용하기 위해서
        // 마찬가지로 static이 들어간다

        if (instance == null) {
            instance = new SystemSpeaker();
        }
        return instance;
    }

    public int getVolume() {
        return volume;
    }

    public void setVolume(int volume) {
        this.volume = volume;
    }

} // class end

/*
* static은 인스턴스(객체)가 생성되기 이전에 별도의 메모리 공간에 할당되어
* 컴파일시에 이미 초기화까지 완료가 된다. 그래서 객체 생성 없이 호출이
* 가능한 것이다
*/


public class Main {
    public static void main(String[] args) {

        SystemSpeaker spk1 = SystemSpeaker.getInstance();
        SystemSpeaker spk2 = SystemSpeaker.getInstance();

        System.out.println(spk1.getVolume()); // 5
        System.out.println(spk2.getVolume()); // 5

        spk1.setVolume(10);
        System.out.println(spk1.getVolume()); // 10
        System.out.println(spk2.getVolume()); // 10 <-- 주목

        spk2.setVolume(20);
        System.out.println(spk1.getVolume()); // 20 <-- 주목
        System.out.println(spk2.getVolume()); // 20

    }
}


Comments