搬砖小弟
设计模式-解释器模式
2019-06-30 / 2 min read

定义

Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.(给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。)

UML

代码实现

public abstract class Expression {
     //每个表达式必须有一个解析任务
     public abstract Object interpreter(Context  ctx);
}
public class TerminalExpression extends Expression {
     //通常终结符表达式只有一个,但是有多个对象
     public Object interpreter(Context ctx) {
             return null;
     }
}
public class NonterminalExpression extends Expression {
     //每个非终结符表达式都会对其他表达式产生依赖
     public NonterminalExpression(Expression... expression){
     }
     
     public Object interpreter(Context ctx) {
             //进行文法处理
             return null;
     }
}
public class Client {
     public static void main(String[] args) {
          Context ctx = new Context();
          //通常定一个语法容器,容纳一个具体的表达式,通常为ListArray、LinkedList、Stack等类型
          Stack<Expression> stack = null; 
          for(;;){
               //进行语法判断,并产生递归调用
          }          
          //产生一个完整的语法树,由各个具体的语法分析进行解析
          Expression exp = stack.pop();
          //具体元素进入场景
          exp.interpreter(ctx);
     }
}

JDK中解释模式

  • java.util.Pattern
  • java.text.Normalizer
  • java.text.Format