선택적 매개변수가 많을 경우 사용하는 생성자 패턴 3가지가 있다.

1. 싱글턴(Singleton)

인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다.
싱글턴 예시로는 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다.

2. 싱글턴 만드는 두 가지 방식

공통:

  1. 생성자를 private 로 감춰둔다.
  2. 유일한 인스턴스에 접근할 수 있는 수단으로 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 클래스가 초기화될 때 만들어진 인스턴스가 전체 시스템에서 하나뿐임이 보장된다.

2) 정적 팩토리 메서드를 public static 멤버로 제공하는 방식