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);
}
}
设计模式笔记_17_解释器模式
最新推荐文章于 2024-11-14 18:58:14 发布