本文共 1608 字,大约阅读时间需要 5 分钟。
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
类比:
(1)AbstractExpression
package designmode.interpreter;public abstract class AbstractExpression { public abstract void Interpret(Context context);}
(2) TerminalExpression
package designmode.interpreter;public class TerminalExpression extends AbstractExpression{ @Override public void Interpret(Context context) { System.out.println("终端解释器"); }}
(3)NonterminalExpression
package designmode.interpreter;public class NonterminalExpression extends AbstractExpression{ @Override public void Interpret(Context context) { System.out.println("非终端解释器"); }}
(4)Client
package designmode.interpreter;import java.util.ArrayList;import java.util.List;public class Client { public static void main(String[] args) { Context context=new Context(); Listlist=new ArrayList<>(); list.add(new TerminalExpression()); list.add(new NonterminalExpression()); list.add(new TerminalExpression()); list.add(new TerminalExpression()); for (AbstractExpression exp : list){ exp.Interpret(context); } }}
终端解释器非终端解释器终端解释器终端解释器Process finished with exit code 0
当有一个语言需要解释执行,并且可以将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式
优点:
缺点
转载地址:http://bxfdi.baihongyu.com/