定义:给定一个语言,定义它的方法的一种表示,并定义一个解释器。这个解释器使用该表示解释语言中的句子
结构图:
演示样例代码:
public abstract class AbstractExpression {
public abstract void interpret(Context context);
}
public class NonterminalExpression extends AbstractExpression {
@Override
public void interpret(Context context) {
// TODO Auto-generated method stub
System.out.println("非终端解释器");
}
}
public class TerminalExpression extends AbstractExpression {
@Override
public void interpret(Context context) {
// TODO Auto-generated method stub
System.out.println("终端解释器");
}
}
public class Context {
private String input;
private String ouput;
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
public String getOuput() {
return ouput;
}
public void setOuput(String ouput) {
this.ouput = ouput;
}
}
client代码:
public class Client {
public static void main(String[] args) {
Context context = new Context();
List<AbstractExpression> list = new ArrayList<AbstractExpression>();
list.add(new TerminalExpression());
list.add(new NonterminalExpression());
list.add(new TerminalExpression());
list.add(new TerminalExpression());
for (AbstractExpression exp : list) {
exp.interpret(context);
}
}
}
输出结果:
终端解释器
非终端解释器
终端解释器
终端解释器