解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。
这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
构建语法树,定义终结符与非终结符。
**应用实例:**编译器、运算表达式计算。
1package com.ceshi22; 2 3public interface Expression { 4 public int interpret(Context context); 5} 6 7package com.ceshi22; 8 9public class Context { 10 private int num1; 11 private int num2; 12 13 public Context(int num1, int num2) { 14 this.num1 = num1; 15 this.num2 = num2; 16 } 17 18 public int getNum1() { 19 return num1; 20 } 21 public void setNum1(int num1) { 22 this.num1 = num1; 23 } 24 public int getNum2() { 25 return num2; 26 } 27 public void setNum2(int num2) { 28 this.num2 = num2; 29 } 30} 31 32package com.ceshi22; 33 34public class Minus implements Expression { 35 36 @Override 37 public int interpret(Context context) { 38 return context.getNum1()-context.getNum2(); 39 } 40} 41 42package com.ceshi22; 43 44public class Plus implements Expression { 45 46 @Override 47 public int interpret(Context context) { 48 return context.getNum1()+context.getNum2(); 49 } 50} 51 52package com.ceshi22; 53 54public class Test { 55 56 public static void main(String[] args) { 57 58 // 计算9+2-8的值 59 int result = new Minus().interpret((new Context(new Plus() 60 .interpret(new Context(9, 2)), 8))); 61 System.out.println(result); 62 } 63}
测试结果:
