(二十三)解释器模式
解释器模式和命令模式一样,都产生一个可执行的对象。解释器模式不同的是创建了一个类层次,该层次中的每个类都实现或者解释了一个公共操作。解释器模式可以让你根据创建的类的层次结构来组合可执行对象。层次结构中的每个类都实现了一个公共操作 。
class Calculator{
private int num1;
private int num2;
public Calculator(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;
}
}
interface Expression{
public int interpret(Calculator cal);
}
class IPlus implements Expression{
public int interpret(Calculator cal){
return cal.getNum1() + cal.getNum2();
}
}
class IMinue implements Expression{
public int interpret(Calculator cal){
return cal.getNum1() - cal.getNum2();
}
}
public class InterpreterTest {
public static void main(String[] args){
Expression ex = new IPlus();
Calculator cal = new Calculator(10, 2);
System.out.println(new IMinue().interpret(new Calculator(new IPlus().interpret(new Calculator(22, 45)),25)));
}
}
每个类的名称通常暗指该类所要实现的或要解释的通用操作,每个类要么定义合成命令的方式,要么表示执行某些操作的终端命令。设计解释器常常会引入变量,以及布尔或者算数表达式。解释器也经常和解析器一起使用,用来创建一个轻量级的语言,简化新的解释器对象的创建。