定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
代码:
package interpreter_model;
import java.util.ArrayList;
import java.util.List;
/**
* @author naivor
* 解释器模式-场景类
*/
public class InterpreterModel {
public static void main(String[] args) {
Context context=new Context();
List<AbstractExpression> expressions=new ArrayList<AbstractExpression>();
AbstractExpression expression1=new TerminalExpression();
AbstractExpression expression2=new NonterminalExpression();
expressions.add(expression1);
expressions.add(expression2);
for (AbstractExpression expression : expressions) {
expression.interpret(context);
}
}
}
/**
*
* @author naivor
* 解释器模式-表达式抽象类
*/
abstract class AbstractExpression{
public abstract void interpret(Context context);
}
/**
*
* @author naivor
* 解释器模式-终结符表达式类
*/
class TerminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
//终结符表达式的业务逻辑
}
}
/**
*
* @author naivor
* 解释器模式-非终结符表达式类
*/
class NonterminalExpression extends AbstractExpression{
@Override
public void interpret(Context context) {
//非终结符表达式的业务逻辑
}
}
/**
*
* @author naivor
* 解释器模式-全局对象类
*/
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;
}
}