Effective Java 02 - item 04 -
in Programming Language on Java
Private 생성자나 열거 타입으로 싱글턴임을 보증하라
싱글턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스 생성 패턴을 말한다.
싱글턴 클래스의 단점은 클라이언트가 테스트 하기가 어렵다라는 점인데, 왜 그럴까?
그 이유는 인터페이스로 정의한 다음 그 인터페이스를 구현한 싱글턴 인스턴스가 아니라면, Mock 객체로 구현해 대체할 수 없기 떄문이다.
싱글턴 오브젝트 생성에는 여러 방법이 있지만, 이 책에서 가장 선호하는 싱글턴 오브젝트 방법은 원소가 하나인 열거 타입을 만드는 것이다.
아래와 같다.
public enum Elvis {
INSTANCE;
public void leaveTheBuilding() { ... }
}
어찌보면 좀 어색해 보이지만, 대부분 상황에서 원소가 하나뿐인 열거타입이 싱글턴을 만드는 가장 좋은 방법이라고 저자는 소개하고 있다.
Reference
이펙티브 자바 Effective Java 3/E
조슈아 블로크