1

この問題のより良いパターン/テクニックを取得しようとしています:

X、Y、Zなどの一連の基準列挙型があり、特定の基準の特定の組み合わせに基づいてさまざまな出力/結果を生成するプロセスがあります。

組み合わせは、一連のルールとして定義されます。次に例を示します。

rule_B = new Rule(X.Value1, Y.Value3, z.Value2);
rule_A = new Rule(X.Value2, Y.Value1, z.Value3);

各ルールは基準の一意の組み合わせを定義し、すべての組み合わせにルールがあるわけではありません (組み合わせによっては意味がない場合があるため)。ルール インスタンスは機能しません。これらは、各要素を一意の組み合わせに格納する単なるコンテナーです。

私の問題は、次のような単一のパブリック インターフェイス クラスを使用して、特定の一連のプロセスを実行する方法です。

class RuleExecutor {
    public void ExecuteBasedOnRule(Rule rule) {
        // Here is where I am stuck!!!!!!
    }
}

RuleExecutor 内で、X の値、Y の値、Z の 3 つのステップ 1 を実行するために、どのような設計パターン/手法を使用できますか。それぞれのステップ値に基づいて異なるプロセスを実行します。C++ では、テンプレートの特殊化を使用した可能性がありますが、C# は役に立たないようです。

注: この複雑な例では、可能な値のセットが小さい 3 つの要因があります。私が検討しているプロジェクトでは、これらは非常に大きく、考えられるすべての組み合わせに対して具体的なクラスを作成することは、軽々しく検討するものではありません!

4

1 に答える 1

1

コマンドパターンが適しているようです。実行の 2 つのステップを持つことができます。

  1. RuleExecutor必要な で構成しますRule
  2. ExecuteBasedOnRuleのメソッドを実行しますRuleExecutor。メソッドは、保存された構成を解析し、データに従って動作する必要があります。

したがって、2 つのメソッドを持つインターフェイスを定義します:config(Rule)execute().

于 2012-11-16T11:08:45.240 に答える