[디자인 패턴] 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형의 모든 객체가 동일한 객체이도록 만든다