知识卡片
解释器模式的优点与三个代价
内容
[[解释器模式的定义与四个角色]]最大优点是扩展性——改语法规则只需改对应非终结符 表达式类,新增语法只需新增类,不影响已有代码。代价三点:类膨胀(规则越多类越多); 依赖递归调用(要拿到结果须逐层剥茧,调试语法错误繁琐);效率问题(语法复杂冗长时循环 递归开销大)。发散:这类”用结构化对象换灵活性”的模式常在类数量、调用链深度、效率三者 间取舍,解释器模式三者代价都明显,故实践中用得较少。
参考来源
- 位置:《设计模式之禅(第2版)》第27章《解释器模式》(源文件:_epub-src/text/part0124.html)
- 结论依据:原文说明解释器模式"最显著的优点就是扩展性",并分三点列出缺点:类膨胀、递归调用导致调试复杂、大量循环递归带来的效率问题。
- 原始内容:解释器是一个简单语法分析工具,它最显著的优点就是扩展性……解释器模式会引起类膨胀……解释器模式采用递归调用方法……它导致调试非常复杂……效率是一个不容忽视的问题,特别是一用于解析复杂、冗长的语法时,效率是难以忍受的。