我会定期阅读一些离散状态,并将一些规则应用于状态差异我会报告一些错误。规则可以及时更改。
解决此类问题的最佳实践是什么?
谢谢。
我首先想到的是名为Strategy的 Gof设计模式。
您在具体策略对象中编码您的规则。因此,您可以拥有一个随时间变化的特定具体策略对象。但最好是更改具体策略对象以反映新规则,恕我直言。
维基百科链接有一个 C++ 示例。但是,如果您不熟悉设计模式和/或需要进一步的解释,请询问。
除了策略模式之外,我还会使用单例模式。一种可能的实现(虽然这是非常开放的,但如果您想要一组灵活的规则,您应该为“规则”实体使用另一个类。但是,这种方式更容易理解):
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 *);
};
当然,这是标题的指示。缺少实现文件。希望这可以帮助。
您可以使用一些规则引擎。java中有很多规则引擎,我不确定Abt C++。这篇文章可能会对你有所帮助。