一、核心思想
是一个特殊的设计模式。它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。
简单的说就是一种简单的语法解释器架构。
包括三个类:
上下文环境类Context:
解释器接口Expression:
解释器具体实现类:
Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现
Codes:
- public interface Expression {
- public int interpret(Context context);
- }
- public class Plus implements Expression {
- @Override
- public int interpret(Context context) {
- return context.getNum1()+context.getNum2();
- }
- }
- public class Minus implements Expression {
- @Override
- public int interpret(Context context) {
- return context.getNum1()-context.getNum2();
- }
- }
- public class Context {
- private int num1;
- private int num2;
- public Context(int num1, int num2) {
- this.num1 = num1;
- this.num2 = num2;
- }
- public int getNum1() {
- return num1;
- }
- public void setNum1(int num1) {
- this.num1 = num1;
- }
- public int getNum2() {
- return num2;
- }
- public void setNum2(int num2) {
- this.num2 = num2;
- }
- }
- public class Test {
- public static void main(String[] args) {
- // 计算9+2-8的值
- int result = new Minus().interpret((new Context(new Plus()
- .interpret(new Context(9, 2)), 8)));
- System.out.println(result);
- }
- }
最后输出正确的结果:3。
二、何时使用
描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中。
适用面比较窄。
三、Java 中的应用
Java正则表达式解析器Pattern