在 Number 类的构造函数中,先将传入的字符转换为对应的数字。在解释时将转换后的数字返回即可。
无论是加法还是减法,他们都是对左右两个表达式进行操作,所以我们可以将计算符提取出共同的抽象父类:
abstract class Operator implements Expression { Expression left; Expression right; Operator(Expression left, Expression right) { this.left = left; this.right = right; } }在此抽象父类中,我们存入了两个变量,表达计算符左右两边的表达式。
加法类实现如下:
class Add extends Operator { Add(Expression left, Expression right) { super(left, right); } @Override public int intercept() { return left.intercept() + right.intercept(); } }减法类:
class Sub extends Operator { Sub(Expression left, Expression right) { super(left, right); } @Override public int intercept() { return left.intercept() - right.intercept(); } }