解释器设计模式
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。
就像是,我们常常会在字符串中搜索匹配的字符或判断一个字符串是否满足我们的需求(规定的格式)的时候,一般都会使用正则表达式来实现。
而匹配字符串的需求在软件的很多地方都会用上,并且行为都很类似,一般的做法都是针对特定的需求写特定的方法。如判断邮箱、电话号码的格式等等。所以与其为每一个特定需求都写一个特定方法,不如使用一种通用的搜索算法来解释执行一个正则表达式,该正则表达式定义了待匹配的字符串集合。
而所谓的解释器模式,正则表达式就是它的一种应用,解释器为正则表达式定义了一个文法,如何表示一个特定的正则表达式,以及如何解释这个正则表达式。
使用场景
解释器模式的注意事项和细节
- 当有一个语言需要解释执行,可将该语言中的句子表示为一个抽象语法树,就可以考虑使用解释器模式,让程序具有良好的扩展性
- 应用场景:编译器、运算表达式计算、正则表达式、机器人等
- 使用解释器可能带来的问题:解释器模式会引起类膨胀、解释器模式采用递归调用方法,将会导致调试非常复 杂、效率可能降低