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) 싱글 톤은 일반적으로 정적 변수를 사용하지 않는 척하는 데 사용됩니다. 실제로 공개 정적 변수를 사용하지 않으면 사람을 속일 수 있습니다.
답변
가장 간단하고 명확한 옵션을 선택하겠습니다. 이것은 다소 주관적이지만 가장 명확한 것을 모르는 경우 가장 짧은 옵션을 선택하십시오.