[디자인패턴] Singleton Pattern
Apr 24, 2019 13:26 · 338 words · 1 minute read
- 싱글톤 패턴이란 단 하나의 인스턴스만을 사용하는 패턴이다.
예시
스피커의 볼륨을 조절하는 클래스의 인스턴스가 여러개라면 조절 할 때 마다 모든 인스턴스를 조절 해야하는 번거로움이 생긴다. 그래서 하나의 인스턴스를 사용한다. 하나의 인스턴스를 사용하기 위해 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());
}
}