Effective Java #3 private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라
싱글턴은 객체를 하나만 만들 수 있는 클래스다. 싱글턴은 보통 유일할 수 밖에 없는 시스템 컴포넌트를 나타낸다. 창 관리자나 파일 시스템 같은 것들이 그 예다. 그런데 클래스를 싱글턴으로 만들면 클라이언트를 테스트하기가 어려워질 수가 있다. 싱글턴이 어떤 인터페이스를 구현하는 것이 아니면 가짜 구현으로 대체할 수 없기 때문이다. JDK 1.5 이전에는 싱글턴을 구현하는 방법이 두 가지였다. 두 방법 다 생성자는 private로 선언하고, 싱글턴 객체는정적 멤버를 통해 이용한다. 첫 번째 방법의 경우, 정적 멤버는 final로 선언한다. 1234public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {};}..