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!!!!!!
    }
}

我可以使用哪种设计模式/技术来执行 3 个步骤:1 用于 X 的值,1 用于 Y 的值,1 用于在 RuleExecutor 内的 Z,每个步骤都根据其步骤值执行不同的过程。在 C++ 中,我可能会使用模板专业化,但 C# 似乎对我没有帮助。

注意:在这个复杂的例子中,有 3 个因素和一小部分可能的值,在我想要做的项目中,这些因素非常大,为每个可能的组合创建一个具体的类并不是我会轻易考虑的事情!

4

1 回答 1

1

命令模式似乎很合适。您可以有 2 个执行步骤:

  1. RuleExecutor使用所需的Rule.
  2. 运行ExecuteBasedOnRule方法RuleExecutor。该方法应该解析存储的配置并根据数据采取行动。

Thus, I would define an interface with 2 methods: config(Rule) and execute().

于 2012-11-16T11:08:45.240 回答