자바 열거 형을 다룰 때 코드 재사용을위한 최적의 디자인 패턴에 관한 질문이 있습니다. 기본적으로 정적 비즈니스 컬렉션 (상수 집합)을 모델링하는 여러 열거 형을 정의 할 수 있지만 가능한 최소한의 코딩으로 동작을 공유하고 싶습니다.자바 열거 형 확장하기
추상 클래스의 클래스 상속을 사용하면이 작업을 쉽게 수행 할 수 있지만 Java enum을 확장 할 수 없으므로 (인터페이스 만 구현할 수 있기 때문에) 이러한 유형의 작업은 지루하고 많은 오류가 발생하기 쉬운 복사/붙여 넣기 작업 (복사 enum에서 enum까지의 코드). 모든 열거 형 사이에서 공유되어야하는 "비즈니스 논리"의 예에는 문자열 변환, 인스턴스 및 논리 비교 등이 포함됩니다.
지금 가장 좋은 방법은 비즈니스 인터페이스와 함께 도우미 클래스를 사용하는 것입니다. 지금까지 코드 복잡성을 줄였습니다 (모든 열거 형은 여전히 도우미 클래스를 선언하고 호출해야하므로). 예제를 참조하십시오 (명확히하기 위해) :
public enum MyEnum {
A, B, C;
// Just about any method fits the description - equals() is a mere example
public boolean equals(MyEnum that) {
ObjectUtils.equals(this, that);
}
}
StackOverflowers는이 "언어 기능"을 어떻게 처리합니까?
과'Delegate' @, 내가 적이없는 롬복을 시도 할 수 enum으로 시도했습니다. –
Java 6에서 열거 형은 최종 클래스입니다. 너는 그들을 확장 할 수 없다. 나는 자바 7이 동일하다고 믿는다. – DwB
열거 형 (enum)이 만들어지지 않았습니다. 클래스 (열거 형 클래스)를 사용하거나 논리를 분리합니다. 당신은이 경우에 대한 팩토리 패턴을 사용할 수있다 (만약 행동이 enum에서 enum까지 충분히 다른 경우). – Viruzzo