2012-11-28 54 views
0

我正在設計一個使用工廠設計模式的簡單應用程序。我正在關注 - >this < - 示例。我想知道的是如何讓工廠類可擴展?在這個例子中,如果他想添加一個Mac按鈕,就必須修改工廠類的代碼。我怎樣才能做到這一點,這是沒有必要的?如何使工廠類可擴展?

有沒有辦法擴展不重寫原始方法的工廠類功能,從而失去該功能?或者也許有辦法讓對象創建完全動態化(使用重載方法?),以便工廠類不需要依賴條件語句?

+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); 
    } 
} 
相關問題