解释器模式——HeadFirst设计模式学习笔记

解释器模式:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子

解释器模式——HeadFirst设计模式学习笔记

特点:

  • 每一种语法设置为一个类,便于实现
  • 便于扩展语言的语法
  • 与处理重复发生的交叉问题或解析一种语言

缺点:

  • 解释器模式会引起类膨胀
  • 效率不高
  • 解释器模式采用递归调用方法

举例:

 1 //解释器接口
 2 public interface Expression {
 3    public boolean interpret(String context);
 4 }
 5 
 6 //实现Or解释器
 7 public class OrExpression implements Expression {
 8      
 9    private Expression expr1 = null;
10    private Expression expr2 = null;
11 
12    public OrExpression(Expression expr1, Expression expr2) { 
13       this.expr1 = expr1;
14       this.expr2 = expr2;
15    }
16 
17    @Override
18    public boolean interpret(String context) {        
19       return expr1.interpret(context) || expr2.interpret(context);
20    }
21 }