본문 바로가기
개발/디자인 패턴

[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 5. Singleton

by hongdor 2021. 1. 7.
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

댓글