解释器模式
定义:
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的语句。
为了解释一种语言,而为语言创建的解释器
类型:行为型
适用场景:
某个特定类型问题发生频率足够高
优点:
语法由很多类表示,容易改变及扩展此“语言”
缺点:
当语法规则数目太多时,增加了系统复杂度
相关设计模式
解释器模式和适配器模式
coding:
业务场景:我们要实现一个自定义的算法
一下程序不需要太深入理解,知道该解释器模式大概在干嘛就行。
创建Test类
实现的算法是:(11+100)*6
运行结果:
创建Interpreter接口
创建AddInterpreter类实现Interpreter接口
创建MultiInterpreter类继承Interpreter接口
创建NumberInterpreter继承Interpreter接口
创建GeelyExpressionParser类
对字符串进行分隔
if语句判断如果是数字字符串就入栈并且转换成数字
else语句对于非数字字符串的话那就是运算符号
获得相应的计算解释器对象
进行入栈和出栈操作。入栈如的是计算结果只会的数字。
当前的UML类图
JDK中的应用:
类Pattern:正则表达式就是一个解释器模式的很好体现,因为正则表达式本身就是一个语法的封装。
在Spring中的应用
类EpressionParser它也封装了字符串表达式的语法,其内部采用的也是解释器模式