概念
解释器模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
实现
类图
代码
- Expression
1 | package com.littlehui.design; |
- OrExpression
1 | package com.littlehui.design; |
- AndExpression
1 | package com.littlehui.design; |
- Client
1 | package com.littlehui.design; |
- 执行结果
1 | Connected to the target VM, address: '127.0.0.1:61783', transport: 'socket' |
场景
- 可以将一个需要解释执行的语言中的句子表示为一个抽象语法树
- 一些重复出现的问题可以用一种简单的语言来表达
- 一个简单语法需要解释的场景
在一些编译器,运算表达式,正则表达式经常有使用。
总结
优点:
1、可扩展性比较好,灵活。
2、增加了新的解释表达式的方式。
3、易于实现简单文法。缺点:
1、可利用场景比较少。
2、对于复杂的文法比较难维护。
3、解释器模式会引起类膨胀。
4、解释器模式采用递归调用方法。