解释器模式

定义

给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子.

角色

  1. 抽象解释器
  2. 终结符表达式

实现与文法中的元素相关联,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符.
3. 非终结符表达式

文法中的每条规则对应于一个非终结表达式
4. 环境角色

优点

扩展性好,修改语法规则只要修改相应的非终结符表达式就可以了,扩展语法则只要增加非终结符类就可以了.

缺点

  1. 解释器模式会引起类膨胀
  2. 解释器模式采用递归调用方法
  3. 效率问题

通用代码

抽象解释器

public abstract class Expression {

    public abstract Object interpreter(Context context);
}

终结符表达式

public class TerminalExpression extends Expression {
    @Override
    public Object interpreter(Context context) {
        return null;
    }
}

非终结符表达式

public class NonterminalExpression extends Expression {

    public NonterminalExpression(Expression expression) {
    }

    @Override
    public Object interpreter(Context context) {
        return null;
    }
}
public class Client {

    public static void main(String[] args) {
        Context context = new Context();
        Stack stack = null;
        for(;;){
            //递归
        }
        Expression exp = stack.pop();
        exp.interpreter(context);
    }
}

你可能感兴趣的:(设计模式,解释器模式,设计模式,java)