解釋器模式(Interpreter)

解釋器模式git

一. 解釋器模式

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

ENDgithub

相關文章
相關標籤/搜索