什么是解释器模式?

解析一些固定文本或句子,把某种表达式的解析成可执行代码的过程。
这种模式实现了一个表达式接口,该接口解释一个特定的上下文。
给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。

应用场景

对于一些固定文法构建一个解释句子的解释器。这种模式被用在 SQL 解析、符号处理引擎等。

某些业务场景下,多相似的业务可以抽象成一种或多种规则,使用某种表达式来表示规则,这里表达式解析成可执行的程序就需要解释器模式,实际开发种多使用规则引擎框架来完成,自定义解释器模式的场景并不常见。

代码实现

示例:咿呀学语,一个简单的人工智障对话助手
基本思路:把疑问句转为陈述句**

  1. //示例: 咿呀学语 一个简单的人工智障对话助手
  2. /**
  3. * 表达式
  4. */
  5. interface Expression {
  6. String interpret(String context);
  7. }
  8. /**
  9. * 将疑问句转为陈述句
  10. */
  11. class YiYaXueYuExpression implements Expression {
  12. @Override
  13. public String interpret(String context) {
  14. return context.replaceAll("?|吗|吗?", "");
  15. }
  16. }
  17. /**
  18. * 解释器模式 测试
  19. */
  20. public class InterpreterPattern {
  21. public static void main(String[] args) {
  22. YiYaXueYuExpression yiya = new YiYaXueYuExpression();
  23. String interpret1 = yiya.interpret("你好吗?");
  24. System.out.println(interpret1);
  25. String interpret2 = yiya.interpret("今天下雨?");
  26. System.out.println(interpret2);
  27. String interpret3 = yiya.interpret("吃饭了吗");
  28. System.out.println(interpret3);
  29. //输出:
  30. //你好
  31. //今天下雨
  32. //吃饭了
  33. }
  34. }