2

私は次のシナリオを持っています (これはより大きな mvc フレームワークに適合します)

システムの特定の機能で使用できるモデル タイプを定義する大きな xml 構成があります。

<object_type1_config>
    <type_id>1</type_id>
    <type_model>amazinTypeModel</type_model>
    <config_value1>blah</config_value1>
    <config_value2>blah blah</config_value2>
</object_type1_config>

コントローラーでは、特定の要求パラメーターに基づいて、実行時に使用するモデルを決定したり、レンダリングするテンプレートを決定したりできます。

さらに複雑なのは、特定の値がそのモデル タイプの構成に存在しない場合、デフォルトの値セットを使用できることです。このデフォルトの値セットは、考えられるすべてのオブジェクト タイプでデフォルトとして使用されます。

問題は、コントローラーがこの構成値を解析してパラメーターを取得し、これらのパラメーターに基づいて決定を行うためのロジックでいっぱいになっていることです。

したがって、これを別のクラスに移動することは理にかなっていますが、コントローラーはモデル タイプを最初に取得するために構成を解析する必要があるため、ここで使用するのに最適な設計パターンは何ですか。次に、モデル タイプをインスタンス化し、値をクエリする必要があります。

ここで物事を切り離す方法がわかりません

4

1 に答える 1

0

あなたはこのようなことをすることができます

class Controller {
    Parser parser;

    Model getModel() {
        return parser.parseModel(userInput);
    }

    Template getTemplate() {
        return parser.parseTemplate(userInput);
    }
}

パーサーがすでにデフォルトの構成値への参照を持っている場合などです (たとえば、パーサーでプロパティ ファイル名としてハードコーディングされているか、そのコンストラクターに渡されています)。コンストラクター/セッターを介してパーサーを設定するか、Spring を使用している場合は自動配線することができます。

于 2013-04-24T16:07:39.187 に答える