[디자인패턴] Singleton Pattern

Apr 24, 2019 13:26 · 338 words · 1 minute read DesignPattern Singleton

  • 싱글톤 패턴이란 단 하나의 인스턴스만을 사용하는 패턴이다.

예시

스피커의 볼륨을 조절하는 클래스의 인스턴스가 여러개라면 조절 할 때 마다 모든 인스턴스를 조절 해야하는 번거로움이 생긴다. 그래서 하나의 인스턴스를 사용한다. 하나의 인스턴스를 사용하기 위해 static으로 선언한다.

package Singleton;

public class SystemSpeaker {
    static private SystemSpeaker instance;
    private int volume;

    private SystemSpeaker() {
        volume = 5;
    }

    public static SystemSpeaker getInstance() {
        if (instance == null) {
            //시스템 스피커/ 아직 생성이 되지 않았을때는 생성을 해주고 
            instance = new SystemSpeaker();
        }
        //instance가 생성되어 있다면 그 인스턴스를 리턴한다.
        return instance;
    }

    public int getVolume() {
        return volume;
    }

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

메인 클래스

같은 인스턴스를 사용하기 때문에 speaker1의 볼륨을 조절하던 speaker2의 볼륨을 조절하던 볼륨값은 둘다 바뀐다.

public class Main {
    public static void main(String[] args){
        SystemSpeaker speaker1 = SystemSpeaker.getInstance();
        SystemSpeaker speaker2 = SystemSpeaker.getInstance();

        System.out.println(speaker1.getVolume());
        System.out.println(speaker2.getVolume());

        speaker1.setVolume(10);

        System.out.println(speaker1.getVolume());
        System.out.println(speaker2.getVolume());

        speaker2.setVolume(13);

        System.out.println(speaker1.getVolume());
        System.out.println(speaker2.getVolume());

    }
}

실행결과

Reference