2013-08-15 6 views
0

이 경우에는 (추상적 인) Factory Pattern의 사용이 권장되는지 물어보고 싶습니다. 나는 수퍼 클래스 인 BaseProduct에서 파생 된 별도의 클래스로 표현되는 20 Products입니다. Products은 5 Categories으로 나뉘며 각 클래스는 수퍼 클래스 BaseCategory에서 파생 된 별도의 클래스로 표시됩니다. 각 Product은 하나의 특정 Category에 속합니다. Product의 생성은 의미가 있고 기술적으로는 Category에서만 수행되므로 의 인스턴스 생성 직전에 각각 Category을 인스턴스화해야합니다. 그러나 CategoryProduct없이 응용 프로그램에서 "단독으로"사용할 수 없습니다. 생성 될 ProductCategory의 선택은 String을 검사하여 결정됩니다. 클라이언트에서 if-else 많은 코드를 방지하기 위해 나는 카테고리의 생성에 관한 Factory Pattern를 사용하는 것을 선호 : 나는 각 Category에서 Products의 창조를 해결하는 방법팩토리 패턴을 두 단계로 적용하십시오.

class CategoryFactory{ 

     static Category createCategory(String s){ 

     if(s.equals("foo")) 
      return new Category1(); 
     else if (s.equals("bar")) 
      return new Category2(); 
     ... 

     } 
     } 

내 걱정입니다. Category 클래스의 생성자에 String을 전달하고 카테고리 내에 비슷한 Factory을 적용해야하나요? ProductsFactory을 사용해야하고 생성자의 매개 변수로 Category을 제공해야하나요? 전체 문제에 대해 더 나은 접근법이 있습니까? 만든 Category 후 나는 Product을 만들 수 없다는 것을 명심하십시오. 클라이언트에 Category을 설치하면 동시에 Product을 만들고 포함해야합니다.

+0

각 제품 및 각 카테고리에 대한 다른 클래스가 올바른 선택입니까? 이 두 클래스의 코드를 추가하면 우리가 말하는 것에 대해 알 수 있습니다. –

+0

사용자 인터페이스의 위젯이며 위젯 "카테고리"에는 위젯 "제품"이 포함되어 있습니다. 코드가 어떻게 보이는지는 내 질문과 관련이있는 디자인과는 관련이 없습니다. – arjacsoh

+0

디자인에 대한 질문을 던졌습니다. 이것이 내가 일부 코드를 요청한 이유입니다. 귀하의 예제에서 귀하의 카테고리가 마커 클래스였던 것처럼 보였습니다. 즉, 빈 생성자를 보았고 두 카테고리 간의 기능적 차이점이 무엇인지 궁금합니다. 현재 디자인 그대로 신뢰한다고 말하면 괜찮습니다. –

답변

2

그렇게 할 수 있습니다. CategorygetProductFactory()과 같은 메소드가있는 것이 더 깔끔할 수 있습니다. 2 Categories과 비슷하거나 동일한 방법으로 Products을 다시 작성하면 공장을 다시 사용할 수 있습니다.

관련 문제