设计模式笔记_17_解释器模式

package com.maom.design.D_17_Interpreter;

import java.util.ArrayList;
import java.util.List;

/**
 * @Title: D_17_Interpreter
 * @Description: 17_解释器模式
 * @Author maohb
 * @Version 1.0
 */
public class D_17_Interpreter {

    public static void main(String[] args) {
        String number = "20";
        Context context = new Context(number);

//		Expression expression1 = new MinusExpression();
//		expression1.interpret(context);
//		System.out.println(context.getOutput());
//
//		Expression expression2 = new PlusExpression();
//		expression2.interpret(context);
//		System.out.println(context.getOutput());

        List<Expression> list = new ArrayList<Expression>();
        list.add(new PlusExpression());
        list.add(new PlusExpression());
        list.add(new MinusExpression());
        list.add(new MinusExpression());
        list.add(new MinusExpression());

        for(Expression ex : list) {
            ex.interpret(context);
            System.out.println(context.getOutput());
        }
    }

}


/** 上下文环境类,用来保存文法 */
class Context {
    private String input;
    private int output;
    public Context(String input) {
        this.input = input;
    }
    public String getInput() {
        return input;
    }
    public void setInput(String input) {
        this.input = input;
    }
    public int getOutput() {
        return output;
    }
    public void setOutput(int output) {
        this.output = output;
    }
}

/** 抽象解释器 */
abstract class Expression {
    public abstract void interpret(Context context);
}

/** 解释器具体实现 */
class PlusExpression extends Expression {
    public void interpret(Context context) {
        //提示信息
        System.out.println("自动递增");
        //获得上下文环境
        String input = context.getInput();
        //进行类型转换
        int intInput = Integer.parseInt(input);
        //进行递增
//		intInput++;
        ++intInput;
        //对上下文环境重新进行赋值
        context.setInput(String.valueOf(intInput));
        context.setOutput(intInput);
    }
}

class MinusExpression extends Expression {
    public void interpret(Context context) {
        System.out.println("自动递减");
        String input = context.getInput();
        int inInput = Integer.parseInt(input);
//		inInput--;
        --inInput;
        context.setInput(String.valueOf(inInput));
        context.setOutput(inInput);
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值