【Java中23种面试常考的设计模式之解释器模式(Interpreter)—行为型模式】
知识回顾:
之前我们讲过的设计模式在这里呦:
【面试最常见的设计模式之单例模式】
【面试最常见的设计模式之工厂模式】
【Java中23种面试常考的设计模式之备忘录模式(Memento)—行为型模式】
【Java中23种面试常考的设计模式之观察者模式(Observer)—行为型模式】
【Java中23种面试常考的设计模式之模板模式(Template)—行为型模式】
【Java中23种面试常考的设计模式之状态模式(State)—行为型模式】
【Java中23种面试常考的设计模式之策略模式(Strategy)—行为型模式】
【Java中23种面试常考的设计模式之迭代器模式(Iterator)—行为型模式】
【Java中23种面试常考的设计模式之访问者模式(Visitor)—行为型模式】
【Java中23种面试常考的设计模式之中介者模式(Mediator)—行为型模式】
接下来我们要进行学习的是:【Java中23种面试常考的设计模式之解释器模式(Interpreter)—行为型模式。
解释器模式
解释器模式:提供了评估语言的语法或表达式的方式。这种模式被用在 SQL 解析、符号处理引擎等。
解决的问题
- 对于一些固定文法构建一个解释句子的解释器。
- 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。
生产开发中常用的使用场景
- EL表达式式的处理
- 正则表达式解释器
- SQL语法的解释器
- 当我们需要开发一种新的语言时,可以考虑使用解释器模式。
- 相比较于其他的设计模式,解释器设计模式不是很常用。
- 等等。。。等等
解释器模式优点与缺点
优点
- 可扩展性比较好,灵活。
- 实现简单。
缺点
- 应用的场景范围小。
- 对于复杂的文法比较难维护。
- 解释器模式会采用递归调用方法,可能会降低效率,并且会提高维护和调试的成本。
核心角色
Context:环境角色(上下文),含有每个解释器所需的一些数据或全局的一些信息。
AbstractExpression:抽象表达式类,声明了抽象的解释操作,所有解释器类都继承或实现该类。
TerminalExpression:终结符表达式类,是AbstractExpression的子类,实现了文法中有关终结符相关的解释操作。NonterminalExpression:非终结符表达式,AbstractExpression的子类,该类的功能与终结表达式类相反,文法中所有非终结符由该类进行解释。
Client:客户端测试类。
UML类图
实现代码:因为这个设计模式应用场景比较少,网络上实现的方式也有很多,这个地方就不实现了,感兴趣的同学可以去看一下【设计模式之禅】【大话设计模式】。
好了,到这里【Java中23种面试常考的设计模式之解释器模式(Interpreter)—行为型模式】就结束了,23种设计模式持续更新汇总中。