Design patterns 解释器模式可以像解析配置文件一样简单吗?

Design patterns 解释器模式可以像解析配置文件一样简单吗?,design-patterns,Design Patterns,希望这不是一个愚蠢的问题,但是解析配置文件并使程序可以使用内容的行为是解释器模式的一个简单示例吗 我发现的所有例子似乎都暗示解释器模式适用于更复杂的情况(例如用复杂语法解释正式语言)但似乎没有任何理由说明它不能涵盖更简单的情况。模式的主要好处之一是作为一种通用语言来描述众所周知的问题及其解决方案 Interprepter的典型示例是一个简单的算术表达式计算器,其中输入表达式被解析为复合树。然后在head节点上应用execute(),以计算表达式的值,每个子表达式(在分支节点处)贡献其部分 如果您

希望这不是一个愚蠢的问题,但是解析配置文件并使程序可以使用内容的行为是解释器模式的一个简单示例吗


我发现的所有例子似乎都暗示解释器模式适用于更复杂的情况(例如用复杂语法解释正式语言)但似乎没有任何理由说明它不能涵盖更简单的情况。

模式的主要好处之一是作为一种通用语言来描述众所周知的问题及其解决方案

Interprepter的典型示例是一个简单的算术表达式计算器,其中输入表达式被解析为复合树。然后在head节点上应用
execute()
,以计算表达式的值,每个子表达式(在分支节点处)贡献其部分

如果您的配置文件是用一种简单的语言编写的,比如XML或JSON,那么解释器模式似乎有些过分,因为没有真正的“繁重工作”来解释要执行的语言语句(即解析)。在学术上,观察与解释器的一些相似之处(正如您所做的那样)可能是有用的,但在代码中注释您正在使用的解释器模式可能会误导他人


但是,如果您的配置是用更复杂的语言表示的,例如条件、循环等,那么可以肯定解释器可能是合理的。解释器模式代码将包括该语言的“解析器”,该解析器将创建某种形式的有用树结构。然后,该树将用于根据需要通过加载模块和相互依赖项等或应用程序需要的任何内容进行配置。这是解释器

如何定义配置文件?一个键值对的列表或者其他结构的东西,比如不同的部分?一个键可以有多个值吗?有不同类型的值吗?