[ 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
[참고]
국비과정 수업 내용참조
'Language > Java' 카테고리의 다른 글
[자바_복습] Vector클래스 : 객체 배열의 크기 관리 (0) | 2022.03.17 |
---|---|
[자바의 정석_복습] String 객체에 대한 이해 (0) | 2022.03.15 |
[자바_복습] 이클립스에서 패키지를 .jar로 내보내기, 가져오기 (0) | 2022.03.14 |
[자바의 정석_복습] 포함관계_Deck과 Card예시 (0) | 2022.03.13 |
[자바의정석_복습] 객체지향 프로그래밍2 - 상속, 다형성 (0) | 2022.03.12 |