设计模式十八之解释器模式
在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。
1. 模式的定义与特点
1.1 模式的定义
解释器模式(Interpreter):给分析对象定义一个语言,并定义该语言的文法表示,在设计一个解释器来解释语言中的句子。
1.2 模式的特点
解释器模式的优点有:
1. 扩展性好,由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法;
2. 容易实现,在语法树中的每个表达式节点类都是相似的,所以实现其文法较为容易。
解释器模式的缺点有:
1. 执行效率比较低;
2. 会引起类膨胀;
3. 可应用的场景比较少。
2. 模式的应用
在项目开发中,如果要对数据表达式进行分析与计算,无须再用解释器模式进行设计了,Java 提供了以下强大的数学公式解析器:Expression4J、MESP(Math Expression String Parser) 和 Jep 等,它们可以解释一些复杂的文法,功能强大,使用简单。