解釋器模式:給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子
UML:
JAVA:
public class InterpreterTest {
public static void main(String[] args) {
Context context = new Context();
List<AbstractExpression> list = new ArrayList<>();
list.add(new TerminalExpression());
list.add(new NonterminalExpression());
list.add(new TerminalExpression());
list.add(new TerminalExpression());
for ( AbstractExpression a:list ) {
a.interpret(context);
}
}
}
class Context{
private String input;
private String output;
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
public String getOutput() {
return output;
}
public void setOutput(String output) {
this.output = output;
}
}
abstract class AbstractExpression{
public abstract void interpret(Context context);
}
//終結符表達式
class TerminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
System.out.println("終端解釋器");
}
}
//非終結符表達式
class NonterminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
System.out.println("非終端解釋器");
}
}