3. private 생성자나 열거 타입으로 싱글톤임을 보장하라

신명철·2022년 2월 9일
0

Effective Java

목록 보기
3/80

싱글턴을 만드는 방식

public static final 필드 방식의 싱글턴

public class A{
	public static final A INSTANCE = new A();
    private A(){};
}
  • 해당 클래스가 싱글턴임이 API 명백히 드러난다.
  • 간결하다.

정적 팩터리 방식의 싱글턴

public class A {
	private static final A INSTANCE = new A();
    private A(){};
    
    public static A getInstance(){
    	return INSTANCE;
    }
}
  • API 를 바꾸지 않고도 싱글턴이 아니게 변경할 수 있다.
    • 팩터리 메서드에서 INSTANCE 를 반환할 때 새로운 객체를 생성해서 반환하는 방식으로 바꾸면 된다.
  • 정적 팩터리를 제너릭 팩터리로 바꿀 수 있다 (#30 내용에 있음)

열거 타입 방식의 싱글턴

public enum A{
	ISNTANCE
}
  • 대부분의 상황에서 원소가 하나뿐인 열거 타입이 싱글턴을 만든느 가장 좋은 방법이다.
  • A 타입의 INSTANCE 는 하나뿐이고 더 이상 만들 수 없다.
  • 다만, 만들려는 싱글턴이 Enum 이외의 다른 상위 클래스를 상속해야 한다면 이 방법은 사용할 수 없다.
profile
내 머릿속 지우개

0개의 댓글