Language/Java

[자바_문법] 디자인패턴_싱글톤(Singleton)

simDev1234 2022. 3. 15. 14:11

[ Single-ton 의 원리]

- 프로그램이 시작되었을 때 클래스변수, 클래스메서드가 메서드영역(클래스영역)에 적재되는 것을 응용
- 단순히 기능만 제공하는 서비스 객체(클래스)인스턴스반복적으로 생성해야할 때,
메모리의 불필요한 사용을 줄이고자 싱글톤을 사용한다.

<일상생활을 예로 이해하기 - 못 박기>

10번 못을 박기 위해,
1) 철물점에 가서 망치를 산다 -> 2) 못을 박는다.
2) 철물점에 가서 망치를 산다 -> 2) 못을 박는다.
3) 철물점에 가서....
x 10
-> 10번 못을 박기 위해,
1) 철물점에 가서 망치를 산다. -> 2) 못을 박는다.
1) 이미 사둔 망치를 또 쓰자 -> 2) 못을 박는다.
.......
x10


▼ 그림으로 표현한 싱글톤 원리


[예제_망치로 못을 박기]

package myutil;

public class MySingleTonTest {

	public static void main(String[] args) {
		int times = 10;
		for(int i = 0; i < times; i++) {
			Hammer hammer = Hammer.getInstance();
			hammer.nail();
		}
	}
	
}

class Hammer{
	public static Hammer single;
	
	protected Hammer(){}
	
	public static Hammer getInstance() {
		if(single == null) {
			single = new Hammer();
		}
		return single;
	} 
	
	public void nail() {
		System.out.println("못!");
	}
}

>> 결과

못!
못!
못!
못!
못!
못!
못!
못!
못!
못!


[ 자세한 내용 참조 링크 ]
https://velog.io/@kyle/%EC%9E%90%EB%B0%94-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-Singleton-Pattern

[참고]
국비과정 수업 내용참조