Design patterns 规则匹配系统的语言/范例选择

Design patterns 规则匹配系统的语言/范例选择,design-patterns,programming-languages,Design Patterns,Programming Languages,我维护一个内部Java应用程序,它只不过是一组规则,由大量的if/else语句级联实现 if(string1.equals(earlierString)){ if(!!string2.equals("YADAYADA")){ errorReport.add("BLAHBLAHYADAYDA error."); } else{ if(string3.equals("MAYBENOT!")){ errorReport.add("POSSIBLE error"

我维护一个内部Java应用程序,它只不过是一组规则,由大量的if/else语句级联实现

if(string1.equals(earlierString)){
  if(!!string2.equals("YADAYADA")){
     errorReport.add("BLAHBLAHYADAYDA error.");
  }
  else{
    if(string3.equals("MAYBENOT!")){
      errorReport.add("POSSIBLE error");
    }
  }
}
诸如此类


展望未来,我有很大的自由选择如何重写它,即使它需要学习时间和培训,所以没有任何选择是真正的表外。什么语言和高级设计范例最适合这个问题?我的主要目标是通过轻微/适度的规则更改,使某些内容更易于更新。

您提供的上下文非常模糊,但我建议您查看一下,至少看看这些内容是否适合您的需要

基于规则的语言的优势在于,它们免费提供了一个引擎来评估规则,并根据某些标准启动它们(这对您的规则集来说可能太多了吗?),允许您以声明方式指定规则(它们与您不需要定义的引擎“不同”)

每个规则都可以被视为由两部分组成的模板:

part_to_match => actions_to_do

CLIPS引擎通过正向链接规则和反向链接规则来工作。

您提供的上下文非常模糊,不过我建议您查看一下,至少看看这些规则是否适合您的需要

基于规则的语言的优势在于,它们免费提供了一个引擎来评估规则,并根据某些标准启动它们(这对您的规则集来说可能太多了吗?),允许您以声明方式指定规则(它们与您不需要定义的引擎“不同”)

每个规则都可以被视为由两部分组成的模板:

part_to_match => actions_to_do

CLIPS引擎通过正向链接规则和反向链接规则工作。

现有引擎数量巨大。谷歌。特别是,这将与工作流管理引擎重叠。现有的引擎数量巨大。谷歌。特别是,这将与工作流管理引擎重叠。