[Java] Singleton Pattern 싱글톤 패턴 예제 (효율적인 객체 생성)
Design Pattern2017. 5. 16. 09:48
안녕하세요 스탭코딩 글 게시자 페이퍼클립입니다.
자바 코딩을 하다보면 객체를 필요 이상으로 생성하는 경우가 있는데 싱글톤 패턴을 사용하여 if문을 통해 같은 객체를 중복해서 생성하는 경우를 방지 할 수 있습니다
싱글톤 클래스의 생성자는 보통 아래와 같이 코딩됩니다.
1 2 3 4 5 | public class Singleton { public Singleton() { } } | cs |
그러나 아래와 같이 싱글톤 패턴을 사용 할 경우 동일한 객체를 한번만 생성하게 되어 메모리 관리를 효율 적으로 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Singleton { private static Singleton instance; public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } private Singleton() { } } | cs |
위 예제를 토대로 설명하겠습니다.
[STEP 1. 생성자를 private 변경하기]
public 이었던 접근 한정자를 private로 변경하여 외부에서 new 키워드를 이용하여 객체를 생성 할 수 없게 방지합니다.
[STEP 2. private static으로 필드 생성하기]
외부에서 필드를 변경, 수정 할수 없도록 private 접근 한정자를 사용하고 외부에서 메소드를 바로 호출 할수 있도록 static으로 인스턴스화 해줍니다.
[STEP 3. 객체를 생성하는 메소드 만들기]
static으로 인스턴스화 해주고 public 접근 한정자를 사용하여 외부 클래스에서 메소드를 호출 할 수 있도록 합니다.
메소드 내용은 if 문으로 앞에서 만들어둔 필드가 null 일 경우(객체를 가리키고 있지 않은 경우)만 새로운 객체를 생성하여 리턴 하도록 합니다.