解释器模式-23种设计模式

类型:【行为型】

类图:

描述:

       解释器模式,给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

优点:

      解释器是一个简单语法分析工具,它最显著的优点就是拓展性,修改语法规则只要修改相应的非终结符表达式就可以了,若拓展语法,则只要增加非终结符类就可以了。

缺点:

  • 解释器模式会引起类膨胀。每个语法都要产生一个非终结符表达式,语法规则比较复杂时,就可能产生大量的类文件,为维护带来了非常多的麻烦。
  • 解释器模式采用递归调用方法。每个非终结符表达式只关心与自己有关的表达式,每个表达式需要知道最终的结果,必须一层一层的剥茧,使用递归会使得调试非常复杂。
  • 效率问题。解释器模式由于使用大量的循环和递归,效率不太理想。

使用场景:

  • 重复发生的问题可以使用解释器模式。eg,多个应用服务器,各个日志的格式不同,但数据要素是相同的,按照解释器的说法就是终结符表达式都是相同的,但是非终结符表达式就需要制定了。
  • 一个简单语法需要解释的场景。解释器模式一般用来解析比较标准的字符集,如SQL,不过这部分逐渐被专业工具代替了。

注意事项:

       尽量不要在重要的模块中使用解释器模式,否则维护会是很大的问题。在项目中可以使用shell、JRuby、Groovy等脚本语言来代替解释器模式,弥补java编译型语言的不足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值