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
}
}