如何使工厂类可扩展?

时间:2012-11-28 14:24:38

标签: java design-patterns factory-pattern

我正在设计一个使用工厂设计模式的简单应用程序。我正在关注 - > this< - 示例。我想知道的是如何使工厂类可扩展?在给出的示例中,如果他想添加Mac按钮,则必须修改工厂类代码。我怎样才能做到这一点,这是不必要的?

有没有办法扩展工厂类的功能,不会覆盖其原始方法,从而失去该功能?或者也许有一种方法可以使对象创建完全动态化(使用重载方法?),以便工厂类不需要依赖条件语句?

1 个答案:

答案 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);
    }
}