设计模式(23)——领域规则模式——解释器模式

本文详细介绍了解释器模式,包括基本介绍、动机、类图和一个四则运算的案例。通过构建抽象语法树,解释器模式用于解决特定领域中频繁变化的问题,例如在Spring框架中SpelExpressionParser的实现。该模式允许程序具有良好的扩展性,常应用于编译器、表达式计算等场景,但也可能导致类膨胀和调试复杂。
摘要由CSDN通过智能技术生成

0.领域规则模式

在特定领域中,某些变化虽然频繁,但可以抽象

 

1.基本介绍

 

2.动机

  • 在软件构建过程中,如果某一特定领域的问题比较复杂,类似结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化
  • 在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的

3.类图

  • 1) Context: 是环境角色,含有解释器之外的全局信息.
  • 2) AbstractExpression: 抽象表达式, 声明一个抽象的解释操作,这个方法为抽象语法树中所有的节点所共享
  • 3) TerminalExpression: 为终结符表达式, 实现与文法中的终结符相关的解释操作
  • 4) NonTermialExpression: 为非终结符表达式,为文法中的非终结符实现解释操作
  • 5) 说明: 输入Context 和 TerminalExpression 信息通过Client 输入即可

4.案例:表达式求值

通过解释器模式来实现四则运算,如计算a+b-c的值,具体要求

  • 1) 先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复
  • 2) 在分别输入a ,b, c, d, e 的值
  • 3) 最后求出结果:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值