JAVA设计模式解释器模式

电脑杂谈  发布时间:2020-07-15 09:21:18  来源:网络整理

设计模式 解释器模式_c 解释器模式_解释器模式应用

用法

口译员模式(口译员)

定义一种语言设计模式 解释器模式设计模式 解释器模式,代表其语法. 并定义一个解释器,使用该表示法来解释语言中的句子.

解释器模式是一种行为模式.

解释器模式应用_设计模式 解释器模式_c 解释器模式

结构

图片翻译模式

上下文: 包含解释器之外的一些全局信息.

class Context {
 private String input;
 private String output;
 
 public void setInput(String input) {
 this.input = input;
     }
 
 public String getInput() {
 return this.input;
     }
 
 public void setOutput(String output) {
 this.output = output;
     }
 
 public String getOutput() {
 return this.output;
     }
 }

解释器模式应用_c 解释器模式_设计模式 解释器模式

AbstractExpression: 声明抽象解释操作. 该接口由抽象语法树中的所有节点共享.

abstract class AbstractExpression {
 public abstract void Interpret(Context context);
 }

TerminalExpression: 实现与语法中的终端关联的解释操作. 实现抽象表达式所需的接口主要是Interprete()方法. 语法中的每个终端符号都有一个与之相对应的特定终端表达式.

class TerminalExpression extends AbstractExpression {
     @Override
 public void Interpret(Context context) {
         context.setOutput("终端" + context.getInput());
         System.out.println(context.getInput() + "经过终端解释器解释为:" + context.getOutput());
     }
 }

c 解释器模式_解释器模式应用_设计模式 解释器模式

NonterminalExpression: 实现与语法中的非终结符相关的解释操作. 对于语法中的每个规则R1,R2 ... Rn,都需要特定的非终止表达式类. 解释方法由实现抽象表达式的解释方法实现.

class NonterminalExpression extends AbstractExpression {
     @Override
 public void Interpret(Context context) {
         context.setOutput("非终端" + context.getInput());
         System.out.println(context.getInput() + "经过非终端解释器解释为:" + context.getOutput());
     }
 }

测试代码

public class InterpreterPattern {
 public static void main(String[] args) {
         Context context = new Context();
         context.setInput("ABC");
 
         AbstractExpression expression1 = new TerminalExpression();
         expression1.Interpret(context);
 
         AbstractExpression expression2 = new NonterminalExpression();
         expression2.Interpret(context);
     }
 }

解释器模式应用_设计模式 解释器模式_c 解释器模式

运行结果

ABC经过终端解释器解释为:终端ABC
 ABC经过非终端解释器解释为:非终端ABC

推荐

本文属于JAVA设计模式系列.

参考

“大华设计模式”和“ HeadFirst设计模式”


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-281035-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...