[디자인 패턴] Singleton 패턴
이멀젼씨
·2020. 2. 10. 20:03
- 정의
하나의 인스턴스만을 생성하고, 인스턴스를 어디서든 참조할 수 있도록 하는 패턴이다
- UML
1. SystemSpeaker클래스를 선언하고 int형 volume, SystemSpeaker형 instance를 static으로 선언한다. instance는 static형이기 때문에 어디서든 참조가 가능하고 모든 SystemSpeaker객체가 instance를 공유한다
- 코드
SystemSpeaker class
public class SystemSpeaker {
static private SystemSpeaker instance;
private int volume;
private SystemSpeaker() {
volume=5;
}
public static SystemSpeaker getInstance() {
if(instance==null) {
instance = new SystemSpeaker();
}
return instance;
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
}
}
Main class
public class Main {
public static void main(String[] args) {
SystemSpeaker speaker1 = SystemSpeaker.getInstance();
SystemSpeaker speaker2 = SystemSpeaker.getInstance();
// 동일한 인스턴스
System.out.println(speaker1);
System.out.println(speaker2);
System.out.println(speaker1.getVolume()); // 5
System.out.println(speaker2.getVolume()); // 5
speaker1.setVolume(11);
System.out.println(speaker1.getVolume()); // 11
System.out.println(speaker2.getVolume()); // 11
speaker2.setVolume(22);
System.out.println(speaker1.getVolume()); // 22
System.out.println(speaker2.getVolume()); // 22
}
}
- 설명
static 변수를 통해 SystemSpeaker형의 모든 객체가 동일한 객체이도록 만든다
'디자인패턴' 카테고리의 다른 글
[디자인 패턴] Builder 패턴 (0) | 2020.03.10 |
---|---|
[디자인 패턴] ProtoType 패턴 (0) | 2020.02.11 |
[디자인 패턴] Factory Method 패턴 (0) | 2020.01.20 |
[디자인 패턴] Template Method 패턴 (0) | 2020.01.19 |
[디자인 패턴] Adapter 패턴 (0) | 2020.01.15 |