Effective Java - Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라

private의 생성자 또는 enum 형으로 싱글 톤 특성을 강제한다.

Java 1.5(Tiger)에서는 하나의 요소만을 가지는 enum 형을 제공하는 것으로 싱글 톤을 작성할 수가 있다.

public enum MySingleton {
    INSTANCE;

    public void greet() { ... }
}

private static한 필드를 이용하여, 싱글 톤 클래스를 만드는 방법에 비해 다음과 같은 이점이 있다.

  • 시리얼라이즈의 기능을 갖춘다.
    • implementes Serializable하지 않아도 된다.
  • 직렬화 공격에 내성을 가진다.
    • readResolve 메소드를 구현하지 않아도 된다.
  • 리플렉션 공격에 내성을 가진다.



최종 수정 : 2023-05-06