[java] Java에서 Enum을 싱글 톤으로 사용하는 가장 좋은 방법은 무엇입니까?

SO 질문에 쓰여진 것을 기반으로 작성 Java에서 Best Singleton Implementation- 즉 enum을 사용하여 singleton을 만드는 방법-차이점 / 장점 / 단점은 무엇입니까 (생성자 생략)

public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}

그리고 전화 Elvis.INSTANCE.getAge()

public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}

그리고 전화 Elvis.getAge()



답변

주어진 객체의 속성을 사용하는 무언가에 바인딩한다고 가정합니다. Elvis.INSTANCE를 매우 쉽게 전달할 수 있지만 Elvis.class를 전달할 수없고 속성을 찾을 것으로 기대할 수 없습니다 (고의적으로 찾을 수 있도록 코딩 된 경우 제외). 클래스의 정적 속성).

기본적으로 인스턴스 를 원할 때만 싱글 톤 패턴을 사용합니다 . 정적 메서드가 제대로 작동하면 해당 메서드를 사용하고 열거 형에 신경 쓰지 마십시오.


답변

큰 장점은 싱글 톤이 인터페이스를 구현해야 할 때입니다. 귀하의 예를 따르면 :

public enum Elvis implements HasAge {
    INSTANCE;
    private int age;

    @Override
    public int getAge() {
        return age;
    }
}

와:

public interface HasAge {
    public int getAge();
}

통계로는 할 수 없습니다 …


답변

(Stateful) 싱글 톤은 일반적으로 정적 변수를 사용하지 않는 척하는 데 사용됩니다. 실제로 공개 정적 변수를 사용하지 않으면 사람을 속일 수 있습니다.


답변

가장 간단하고 명확한 옵션을 선택하겠습니다. 이것은 다소 주관적이지만 가장 명확한 것을 모르는 경우 가장 짧은 옵션을 선택하십시오.


답변