Java设计模式之解释器模式
- 人工智能
- 2025-08-30 23:36:02

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