设计模式18-解释器模式:小语言的语法解析

发布时间:2026/9/12 19:22:15
设计模式18-解释器模式:小语言的语法解析 解释器模式给规则语言写一个解释器业务规则、表达式计算、查询条件、模板语法本质上都是“一门小语言”。解释器模式把语法规则翻译成可执行的对象树。一、痛点规则硬编码变化起来很痛苦一个风控系统需要判断用户年龄大于 18且账户状态为正常且近 7 天登录次数大于 3如果直接把规则写成 Java 代码if(age18accountStatus.equals(NORMAL)loginCount3){// 通过}规则一变就要改代码、重新发布。业务人员也没法自己维护规则。解释器模式的回答把规则表达成可以被解析的表达式再把表达式结构映射成对象树通过递归求值得到结果。二、实现表达式接口 → 终结符/非终结符 → 解析求值以最简单的布尔表达式为例支持true、false、and、or、not。第一步定义表达式接口publicinterfaceExpression{booleaninterpret(Contextcontext);}这里先简化不需要 ContextpublicinterfaceExpression{booleanevaluate();}第二步终结符表达式publicclassBooleanLiteralimplementsExpression{privatefinalbooleanvalue;publicBooleanLiteral(booleanvalue){this.valuevalue;}Overridepublicbooleanevaluate(){returnvalue;}}第三步非终结符表达式publicclassAndExpressionimplementsExpression{privatefinalExpressionleft;privatefinalExpressionright;publicAndExpression(Expressionleft,Expressionright){this.leftleft;this.rightright;}Overridepublicbooleanevaluate(){returnleft.evaluate()right.evaluate();}}publicclassOrExpressionimplementsExpression{privatefinalExpressionleft;privatefinalExpressionright;publicOrExpression(Expressionleft,Expressionright){this.leftleft;this.rightright;}Overridepublicbooleanevaluate(){returnleft.evaluate()||right.evaluate();}}第四步构造表达式树ExpressionrulenewAndExpression(newBooleanLiteral(true),newOrExpression(newBooleanLiteral(false),newBooleanLiteral(true)));System.out.println(rule.evaluate());// true真实系统中rule不应由 Java 代码手动拼而应由解析器把字符串规则转换为这棵表达式树。三、真实落地需要更多组件解释器模式的核心是“解释”但生产级规则系统还要具备组件作用词法分析器把字符串拆成 Token语法分析器把 Token 构造成抽象语法树上下文保存变量、环境、中间结果求值器递归遍历语法树计算结果像正则表达式、SQL、EL 表达式、规则引擎底层都使用了类似思想。四、适用边界与替代方案解释器模式适合规则简单、语法稳定、变化频率可控的场景。如果规则非常复杂或频繁变化直接使用成熟规则引擎如 Drools、表达式语言SpEL、Aviator通常更务实。手写解释器要谨慎它容易带来解析器维护成本、性能损耗和递归深度问题。小结解释器模式一句话用对象树表示语法用递归求值解释规则。它让“规则变化”从改 Java 代码走向改表达式适合小而稳定的领域语言。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询