详谈:解释器模式(三)

我们接上文来继续讲:

计算符怎么处理呢?计算符左右两边可能是单个数字,也可能是另一个计算公式。但无论是数字还是公式,两者都有一个共同点,那就是他们都会返回一个整数:数字返回其本身,公式返回其计算结果。

所以我们可以根据这个共同点提取出一个返回整数的接口,数字和计算符都作为该接口的实现类。在计算时,使用栈结构存储数据,将数字和计算符统一作为此接口的实现类压入栈中计算。

talk is cheap, show me the code.

数字和计算符公共的接口:

复制代码
interface Expression {
    int intercept();
}

上文已经说到,数字和计算符都属于表达式的一部分,他们的共同点是都会返回一个整数。从表达式计算出整数的过程,我们称之为解释(intercept)。

对数字类的解释实现起来相对比较简单:

复制代码
public class Number implements Expression {
    int number;

    public Number(char word) {
        switch (word) {
            case '零':
                number = 0;
                break;
            case '一':
                number = 1;
                break;
            case '二':
                number = 2;
                break;
            case '三':
                number = 3;
                break;
            case '四':
                number = 4;
                break;
            case '五':
                number = 5;
                break;
            case '六':
                number = 6;
                break;
            case '七':
                number = 7;
                break;
            case '八':
                number = 8;
                break;
            case '九':
                number = 9;
                break;
            default:
                break;
        }
    }

    @Override
    public int intercept() {
        return number;
    }
}
相关推荐
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++·设计模式·解释器模式