什么是解释器模式?
解析一些固定文本或句子,把某种表达式的解析成可执行代码的过程。
这种模式实现了一个表达式接口,该接口解释一个特定的上下文。
给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。
应用场景
对于一些固定文法构建一个解释句子的解释器。这种模式被用在 SQL 解析、符号处理引擎等。
某些业务场景下,多相似的业务可以抽象成一种或多种规则,使用某种表达式来表示规则,这里表达式解析成可执行的程序就需要解释器模式,实际开发种多使用规则引擎框架来完成,自定义解释器模式的场景并不常见。
代码实现
示例:咿呀学语,一个简单的人工智障对话助手
基本思路:把疑问句转为陈述句**
//示例: 咿呀学语 一个简单的人工智障对话助手
/**
* 表达式
*/
interface Expression {
String interpret(String context);
}
/**
* 将疑问句转为陈述句
*/
class YiYaXueYuExpression implements Expression {
@Override
public String interpret(String context) {
return context.replaceAll("?|吗|吗?", "");
}
}
/**
* 解释器模式 测试
*/
public class InterpreterPattern {
public static void main(String[] args) {
YiYaXueYuExpression yiya = new YiYaXueYuExpression();
String interpret1 = yiya.interpret("你好吗?");
System.out.println(interpret1);
String interpret2 = yiya.interpret("今天下雨?");
System.out.println(interpret2);
String interpret3 = yiya.interpret("吃饭了吗");
System.out.println(interpret3);
//输出:
//你好
//今天下雨
//吃饭了
}
}