728x90
출처 : 책 - java 언어로 배우는 디자인 패턴 입문
5. Singleton - 인스턴스를 한 개만 만들기
1. 목적
- 문자열 "abc" 1개당 1개의 인스턴스이다. 문자열이 1000개면 1000개의 인스턴스가 만들어진다.
- 컴퓨터 1개, 공통 시스템 설정 등 인스턴스가 단 한 개만 필요할 때 사용한다.
물론 new 를 1번만 쓰면 되지만 실수라는 것이 있기에 보증할 수 없다.
- 방법 :
1. 생성자를 private로 선언
2. static 메소드를 통한 인스턴스 반환
- 복수의 인스턴스는 서로 영향을 미쳐 뜻하지 않은 버그가 발생할 가능성이 있다.
> 스프링같은 프레임워크에서 어노테이션으로 빈 등록을 하면 싱글톤으로 생성된다.
메모리 낭비를 줄이고 혹시모를 버그를 없애기 위함이 아닐까 생각해본다.
2. 예시
(1) 싱글톤 형태 클래스
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("인스턴스를 생성했습니다.");
}
public static Singleton getInstance() {
return singleton;
}
}
(2) Main
public class Main {
public static void main(String[] args) {
System.out.println("Start.");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2) {
System.out.println("obj1과 obj2는 같은 인스턴스입니다.");
} else {
System.out.println("obj1과 obj2는 같은 인스턴스가 아닙니다.");
}
System.out.println("End.");
}
}
728x90
'개발 > 디자인 패턴' 카테고리의 다른 글
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 7. Builder (0) | 2021.01.08 |
---|---|
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 6. Prototype (0) | 2021.01.08 |
[Java 언어로 배우는 디자인 패턴 입문] 하위 클래스 위임 4. Factory Method (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 하위 클래스 위임 3. Template Method (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 입문 2. Adapter- 재이용 (0) | 2021.01.04 |
댓글