主页 > 人工智能  > 

Java设计模式之解释器模式

Java设计模式之解释器模式

文章目录 Java 设计模式之解释器模式概述UML代码实现

Java 设计模式之解释器模式 概述 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 UML

AbstractExpression:表达式接口,定义解释行为。TerminalExpression:终结符表达式,直接返回一个值。NonterminalExpression:非终结符表达式,包含其他表达式并组合它们。Context:上下文环境类。 代码实现

定义解释器接口:

public interface Expression { int interpret(); }

定义终端解释器类:

public class NumberExpression implements Expression { private int number; public NumberExpression(int number) { this.number = number; } @Override public int interpret() { return number; } }

定义非终端解释器类:

// 加法表达式 public class AddExpression implements Expression { private Expression leftExpression; private Expression rightExpression; public AddExpression(Expression leftExpression, Expression rightExpression) { this.leftExpression = leftExpression; this.rightExpression = rightExpression; } @Override public int interpret() { return leftExpression.interpret() + rightExpression.interpret(); } } // 减法表达式 public class SubtractExpression implements Expression { private Expression leftExpression; private Expression rightExpression; public SubtractExpression(Expression leftExpression, Expression rightExpression) { this.leftExpression = leftExpression; this.rightExpression = rightExpression; } @Override public int interpret() { return leftExpression.interpret() - rightExpression.interpret(); } }

使用:

public class Client { public static void main(String[] args) { NumberExpression numberExpression1 = new NumberExpression(1); NumberExpression numberExpression2 = new NumberExpression(2); NumberExpression numberExpression3 = new NumberExpression(5); Expression addExpression = new AddExpression(numberExpression1, numberExpression2); Expression subtractExpression = new SubtractExpression(addExpression, numberExpression3); int result = subtractExpression.interpret(); System.out.println("result: " + result); } }

输出:

result: -2
标签:

Java设计模式之解释器模式由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java设计模式之解释器模式