基于规则的设计

时间:2010-08-18 11:21:47

标签: c++ rules business-rules

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

解决此类问题的最佳做法是什么?

感谢。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

除了策略之外,我还会使用单身模式。 一种可能的实现(尽管这是非常开放的,如果你想要一套灵活的规则,你应该为“规则”实体使用另一个类。但是,这样理解起来更简单):

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 :(得分:0)

您可以使用一些规则引擎。 java中有很多规则引擎,我不确定是否使用C ++。 这post 可能会对您有所帮助。