Java设计模式之解释器模式

Java23种设计模式

定义:一种语法分析工具,用来分步解释一个复杂的运算过程,复杂运算拆分成多个小运算。

需求:计算(1+2)*(3+4)的值。

必备元素:

  • 抽象解释器:声明所有表达式都要实现的方法。(接口)
  • 终结符表达式:复杂运算的最小单元(例子中的1+2和3+4都是)
  • 非终结符表达式:计算终结符表达式的表达式(例子中的*操作)
  • 环境角色:输入1、2、3、4的类。
  1. 创建解释器接口,里面包含一个解释操作的方法
public interface Expression {
    int interpret();
}
  1. 创建终结符表达式,里面计算加法
public class TerminalExpression implements Expression{
    private int a;
    private int b;
    public TerminalExpression(int a,int b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public int interpret() {
        return a+b;
    }
}
  1. 创建非终结符表达式,里面计算乘法
public class MulExpression implements Expression{
    private Expression a;
    private Expression b;

    public MulExpression(Expression a, Expression b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public int interpret() {
        return a.interpret()*b.interpret();
    }
}
  1. 创建环境角色,因为计算值不复杂,就直接写在Test中。
public class Test {
    public static void main(String[] args) {
        TerminalExpression a = new TerminalExpression(1,2);
        TerminalExpression b = new TerminalExpression(3,4);
        MulExpression mulExpression = new MulExpression(a,b);
        System.out.print("计算结果为:"+mulExpression.interpret());
    }
}

打印结果:

计算结果为:21
  1. 解释器模式实际使用了递归,使用时候需要谨慎。
  2. 解释器模式适用于有规律的语句解析,比方手SQL语句。
  3. 解释器模式适合一些频繁出现的运算,比方说例子中的计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值