解释器模式

一. 解释器模式

1.1 定义

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

1.2 角色

  • 抽象表达式接口(IExpression).
  • 终结符表达式(TerminalExpression).
  • 非终结符表达式(NonterminalExpression).
  • 上下文环境(Context).

二. 具体实现

1.1 创建抽象接口

    public interface IExpression {
        void interpreter();
    }

1.2 创建终结符表达式

    public class TerminalExpression implements IExpression {
        @Override
        public void interpreter() {
            System.out.println("TerminalExpression interpreter ...");
        }
    }

1.3 创建非终结符表达式

    public class NonterminalExpression implements IExpression {
        private TerminalExpression terminalExpressionA, terminalExpressionB;
        public NonterminalExpression(TerminalExpression terminalExpressionA, TerminalExpression terminalExpressionB){
            this.terminalExpressionA = terminalExpressionA;
            this.terminalExpressionB = terminalExpressionB;
        }
        @Override
        public void interpreter() {
            terminalExpressionA.interpreter();
            terminalExpressionB.interpreter();
            System.out.println("interpreter terminalExpressionA AND  terminalExpressionB ...");
        }
    }

1.4 调用

    public static void main(String[] args) {
        TerminalExpression expressionA = new TerminalExpression();
        TerminalExpression expressionB = new TerminalExpression();
        IExpression expression = new NonterminalExpression(expressionA, expressionB);
        expression.interpreter();
    }

1.5 输出

    TerminalExpression interpreter ...
    TerminalExpression interpreter ...
    interpreter terminalExpressionA AND  terminalExpressionB ...

三. 优缺点

3.1 优点

  • 灵活性强.
  • 扩展性强.

3.2 缺点

  • 每个文法对应一个表达式类,类泛滥.
  • 复杂文法较难实现.

四. 源码

    https://github.com/Seasons20/DisignPattern.git

END


JadeQYuan
279 声望311 粉丝

知其然,知其所以然。。。