一、概述
解释器模式是一种行为设计模式,它定义了一种语言和解释器,用于解释和执行特定的语言表达式。该模式将每个语言表达式表示为一个类,并提供了一种方法来解释和执行这些表达式。
二、代码
//1.抽象表达式类
public interface Expression {
//解释方法
int interpret();
}
//2.非终结符表达式类
public class AdditionExpression implements Expression {
private Expression leftOperand;
private Expression rightOperand;
public AdditionExpression(Expression leftOperand, Expression rightOperand) {
this.leftOperand = leftOperand;
this.rightOperand = rightOperand;
}
public int interpret() {
return leftOperand.interpret() + rightOperand.interpret();
}
}
//3.终结符表达式类
public class NumberExpression implements Expression {
private int number;
public NumberExpression(int number) {
this.number = number;
}
public int interpret() {
return number;
}
}
//4.测试类
public class Test {
public static void main(String[] args) {
// 构建语法树
Expression expression = new AdditionExpression(
new NumberExpression(10),
new AdditionExpression(
new NumberExpression(5),
new NumberExpression(2)
)
);
// 解释和执行表达式
int result = expression.interpret();
System.out.println("Result: " + result); // Output: Result: 17
}
}
在上述代码中,我们定义了抽象表达式接口 Expression
,其中包含了一个 interpret()
方法,用于解释和执行表达式。
终结符表达式类 NumberExpression
表示一个数字,并在 interpret()
方法中返回该数字。
非终结符表达式类 AdditionExpression
表示一个加法表达式,它包含了左操作数和右操作数,并在 interpret()
方法中执行加法运算。
在测试代码中,我们构建了一个语法树,其中包含了一个加法表达式和若干数字表达式。然后,我们调用根表达式的 interpret()
方法,解释和执行整个表达式树,最终得到结果。