【问题标题】:Rule Based Design基于规则的设计
【发布时间】:2011-03-31 12:03:42
【问题描述】:

我会定期读取一些离散状态,并将一些规则应用于状态差异我会报告一些错误。 规则可以及时更改。

解决此类问题的最佳实践是什么?

谢谢。

【问题讨论】:

  • 规则可以及时更改是不是实时的?
  • 不一定,但也可以听到有关实时的想法。

标签: c++ rules business-rules


【解决方案1】:

除了策略模式之外,我还会使用单例模式。 一种可能的实现(虽然这是相当开放的,但如果您想要一组灵活的规则,您应该为“规则”实体使用另一个类。但是,这种方式更容易理解):

class Rules {
public:
    virtual bool rule_1(Data *) = 0;
    // ...
    virtual bool rule_n(Data *) = 0;

    static Rules * getRules()
        {
            // The only place in which to change the rule set
            if ( ruleSet == NULL ) ruleSet = new Rules_September2010();
            return ruleSet;
        }
protected:
    Rules();
    static Rules * ruleSet;
};

class Rules_August2010 : public Rules {
public:
    bool rule_1(Data *);
    bool rule_n(Data *);
};

class Rules_September2010 : public Rules {
public:
    bool rule_1(Data *);
    bool rule_n(Data *);
};

当然,这是标题的指示。缺少实现文件。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我首先想到的是名为Strategy 的 Gof'Design Pattern

    您在具体策略对象中编码您的规则。 因此,您可以拥有一个随时间变化的特定具体策略对象。 但最好是更改具体策略对象以反映新规则,恕我直言。

    维基百科链接有一个 C++ 示例。但如果您不熟悉设计模式和/或需要进一步解释,请询问。

    【讨论】:

      【解决方案3】:

      您可以使用一些规则引擎。 java中有很多规则引擎,我不确定Abt C++。 这个post 可以帮到你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多