哪种模式/模式最适合开发规则/决策引擎

Per*_*der 9 .net design-patterns business-logic business-rules

我正在研究决策引擎/规则评估引擎.例如:

输入:客户和客户完成的所有违规行为

产出:违法行为的后果

一个示例案例是:

输入:客户(Jhonny Chimpo,999-00-1111),犯罪(打破了窗口,打了一个老板,在他的腹股沟中踢了团队领导)

输出:获得粉红色滑动

因此,我想写的代码片段根据每个攻击和组合攻击的规则评估不同的攻击.当前代码只是if和else语句的迷宫.我确信这些业务问题很常见.通常使用什么设计/企业模式来解决这样的问题?

这是规格模式吗?我希望代码是开放的扩展,干净和灵活.

sta*_*ker 3

基本上业务规则看起来像

forall rules:
  if <condition> then doAction();
Run Code Online (Sandbox Code Playgroud)

是否可以使用分数按严重程度对所有罪行进行分类,也许对经常“作恶”的人有额外的奖励,某些罪行可能会被限制时间以及任何需要的东西。

那么算法的粗略草案可能是:

  • 客户所有分数的总和(加权)
  • 与最大值比较

使用数据结构而不是许多(可能是深层嵌套的)if..then..else 东西,这将是直接的。