2012-11-28 4 views
0

저는 공장 디자인 패턴을 사용하는 간단한 응용 프로그램을 설계하고 있습니다. 나는 다음과 같습니다 ->this < - 예. 내가 궁금해하는 점은 factory 클래스를 확장 가능하게 만드는 방법이다. 주어진 예제에서, Mac 버튼을 추가하려면 공장 클래스 코드를 수정해야합니다. 이것이 필요하지 않도록 어떻게 만들 수 있습니까?공장 클래스를 확장 가능하게 만드는 방법은 무엇입니까?

원래 메서드를 재정 의하여 해당 기능을 잃지 않는 factory 클래스의 기능을 확장하는 방법이 있습니까? 아니면 과부하 된 메소드를 사용하여 객체 생성을 완전히 동적으로 만들 수있는 방법이있어서 factory 클래스가 조건문에 의존 할 필요가 없습니까?

+0

당신은 추상 공장을하고 있습니까? 아니면 그냥 콘크리트 공장? 어떤 사람들은 콘크리트가 실제 디자인 패턴이 아니며, 디자인 패턴의 유연성을 위해 추상적이어야한다고 말합니다. –

+0

콘크리트 공장. – spacitron

+0

그럴 가능성이 있습니다. 추상 팩토리 패턴을 포함한 디자인 패턴에 대한 책을 읽었습니까? 그렇지 않다면 그렇게하는 것이 좋습니다. –

답변

0

대답은 공장 일을하지만, 제공의 예에서 무엇 달려, 당신이 할 수 있습니다 :

package tips.pattern.factory; 
public class ButtonFactory { 

    private final Map<String, Button> osToButton; 

    public ButtonFactory(Map<String, Button> osToButton) { 
     this.osToButton = osToButton; 
    } 

    public Button createButton(String os){ 
     return this.osToButton.get(os); 
    } 
} 
관련 문제