详谈:解释器模式(四)

在 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();
    }
}
相关推荐
youngerwang8 天前
【系统架构案例分析每日深耕 Day 5】解释器/规则引擎架构在风控系统中的应用
系统架构·解释器模式·案例分析·风控系统
咖啡八杯21 天前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
我登哥MVP25 天前
走进 Gang of Four 设计模式:解释器模式
java·设计模式·解释器模式
多加点辣也没关系3 个月前
设计模式-解释器模式
设计模式·解释器模式
geovindu3 个月前
go: Interpreter Pattern
开发语言·设计模式·golang·解释器模式
ximu_polaris3 个月前
设计模式(C++)-行为型模式-解释器模式
c++·设计模式·解释器模式
yaaakaaang4 个月前
十六、解释器模式
java·解释器模式
砍光二叉树4 个月前
【设计模式】行为型-解释器模式
设计模式·解释器模式
青春易逝丶4 个月前
解释器模式
解释器模式
Yu_Lijing5 个月前
基于C++的《Head First设计模式》笔记——解释器模式
c++·设计模式·解释器模式