我正在设计一个使用工厂设计模式的简单应用程序。我正在关注 - > this< - 示例。我想知道的是如何使工厂类可扩展?在给出的示例中,如果他想添加Mac按钮,则必须修改工厂类代码。我怎样才能做到这一点,这是不必要的?
有没有办法扩展工厂类的功能,不会覆盖其原始方法,从而失去该功能?或者也许有一种方法可以使对象创建完全动态化(使用重载方法?),以便工厂类不需要依赖条件语句?
答案 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);
}
}