0

ファクトリデザインパターンを使用した単純なアプリケーションを設計しています。私は次の->この<-例です。私が疑問に思っているのは、ファクトリークラスを拡張可能にするにはどうすればよいですか?与えられた例では、Macボタンを追加したい場合は、ファクトリクラスコードを変更する必要があります。これが不要になるようにするにはどうすればよいですか?

元のメソッドをオーバーライドせずにファクトリクラスの機能を拡張して、その機能を失う方法はありますか?または、オブジェクトの作成を完全に動的にして(オーバーロードされたメソッドを使用して?)、ファクトリクラスが条件ステートメントに依存する必要がないようにする方法があるのでしょうか。

4

1 に答える 1

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);
    }
}
于 2012-11-28T14:53:49.363 に答える