선택적 매개변수가 많을 경우 사용하는 생성자 패턴 3가지가 있다.
1. 싱글턴(Singleton)
인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다.
싱글턴 예시로는 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다.
2. 싱글턴 만드는 두 가지 방식
공통:
- 생성자를
private
로 감춰둔다. - 유일한 인스턴스에 접근할 수 있는 수단으로
public static
멤버를 하나 마련한다.
1) public static
멤버가 final
필드인 방식
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() {...}
public void leaveTheBuilding() {...}
}
private
생성자는 정적 필드인INSTANCE
를 초기화할 때 딱 한 번만 초기화된다.
→public
이나protected
생성자가 없으므로Elvis
클래스가 초기화될 때 만들어진 인스턴스가 전체 시스템에서 하나뿐임이 보장된다.