0
我正在設計一個使用工廠設計模式的簡單應用程序。我正在關注 - >this < - 示例。我想知道的是如何讓工廠類可擴展?在這個例子中,如果他想添加一個Mac按鈕,就必須修改工廠類的代碼。我怎樣才能做到這一點,這是沒有必要的?如何使工廠類可擴展?
有沒有辦法擴展不重寫原始方法的工廠類功能,從而失去該功能?或者也許有辦法讓對象創建完全動態化(使用重載方法?),以便工廠類不需要依賴條件語句?
我正在設計一個使用工廠設計模式的簡單應用程序。我正在關注 - >this < - 示例。我想知道的是如何讓工廠類可擴展?在這個例子中,如果他想添加一個Mac按鈕,就必須修改工廠類的代碼。我怎樣才能做到這一點,這是沒有必要的?如何使工廠類可擴展?
有沒有辦法擴展不重寫原始方法的工廠類功能,從而失去該功能?或者也許有辦法讓對象創建完全動態化(使用重載方法?),以便工廠類不需要依賴條件語句?
答案將取決於什麼樣的工廠做,但在提供的例子,你可以這樣做:
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);
}
}
你在做一個抽象的工廠?或者只是一個混凝土工廠?有人說,具體不是一個真正的設計模式,對於設計模式的靈活性,它需要是抽象的。 –
混凝土工廠。 – spacitron
這可能是你的問題。你是否閱讀過包括抽象工廠模式在內的設計模式的書?如果沒有,我建議你這樣做。 –