2012-10-22 6 views
0


싱글 톤이있는 팩터 리 패턴을 사용해야합니다. 팩토리 클래스는 열거 형에 따라 두 개의 서로 다른 객체를 만듭니다.Enum이있는 Java 팩토리 패턴

올바른 개체를 반환하는 가장 좋은 방법은 무엇입니까?

솔루션 1 : IF-다른 결정에 의해 공장에서 :

if(enumType == "objectA") return new objectA() 

솔루션 2 : 열거 클래스는 리턴 기능이 있습니다

enum ObjectType{ ObjectA{ .. return new ObjectA()..}} 

들으, 마이크

+0

죄송합니다.이 게시물을 편집하는 데 문제가 있습니다. 나는 잊어 버렸다 : 안녕하세요 :) – micho

+0

솔루션 2를 선호하지만 솔루션 1을 고집한다면'switch' 문을 사용하는 것이 약간 더 좋을 것이라고 생각합니다. – emory

답변

7

쓰기 enum에 대한 함수. 그렇게하면 새 enum을 추가 할 때 팩토리 메서드에 절을 추가하는 것을 잊지 않을 것입니다.

일반적으로 모든 솔루션에 대해 if/else if 등의 시퀀스를 통해 다형성 및 방법 구현을 선호합니다. 오류가 발생하기 쉽고 런타임에 컴파일 타임에 문제가 발생합니다.

+0

"enum"이 아마도 여기의 경우가 아닌 당신의 제어하에 있지 않다면 내가 이런 식으로하지 않는 것에 대해 생각할 수있는 유일한 이유가 될 것입니다. – emory

+0

열거 형 멤버에 디스패치하는 방법이 많이 있고 각 방향이 코드에서 한 번만 사용되는 경우 'switch'가 메서드 디스패치보다 좋습니다. 이것은 실제로는 매우 드뭅니다. –

0

클래스의 인스턴스를 두 개만 가질 수있는 경우 다른 클래스를 수퍼 클래스로 지정해야하는 경우가 아니면 Enum을 사용합니다.