【起源】
不断重现的复杂问题,总是可以分解成可以解决的小问题(就像一切数学函数都可以用级数分解成正弦函数和余弦函数)。可以考虑将问题用一个句子表示(语法自定义),并构建解释器(描述语法规则),解释句子的含义(处理该问题)。
本质是通过解释器的解释规则将复杂问题分解成已知的小问题,并逐个解决。定义解释器是关键!
【动机】
给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。
【核心】
宏观思想:映射。
任何一种语言的本质:含义的表达。“语言的表示”与“含义”是映射关系,通过“语法规则”这座桥梁联系起来。
Interpreter模式本质是在“自定义语言”,与我们平时用的计算机语言是一样的。我们通过这种语言告诉计算机去做什么事情,解释器就是语言与计算机的沟通协议。
“映射,规则”在数学层面抽象为“函数”。我们处理问题的算法就是一个大函数,函数有(逻辑,表达)两个方面;最简单的逻辑是枚举,表达最复杂,抽象水平最低;为了得到简单的表达,必须提高抽象水平,使逻辑变得复杂。
计算机问题的通常解决方法:本质上是枚举。因为问题的变化范围有限。
Interpreter用来解决 变化范围不可枚举或难于枚举 的问题。解释器就是高度抽象的函数 处理=F(问题)。
【代码实例】
【模型图】