为什么 Filter 是结构性的而 Interpreter 是行为性的?

Why Filter is structural while Interpreter is behavioral?

FilterInterpreter 设计模式看起来非常相似,都是面向任务的。 Filter 会根据某些条件过滤列表,而 Interpreter 会针对单个元素执行几乎相同的操作。

但我想知道为什么 FilterStructuralInterpreter行为。有人有想法吗?

虽然确实是"task-oriented",但这两种模式其实指的是不同的用途,我们以SQLTable为例class.

过滤器模式 可以用于 filter/remove/hide,更普遍地影响数据库的结构,但根本不修改它的行为。

示例 1:过滤后,它只是一个包含 less/more 行和可能 less/more 列的新 SQLTable

解释器模式 属于行为模式,从某种意义上说,它修改了对象的行为(通常借助 Composite 等结构模式表示)。区别在于对结构的解释行为不同。

示例 2:一旦解释为 csv-table,您的 SQLTable 现在可以导出到 PDF 文件

我猜你的误解是因为它们都应用于结构以创建其他东西,但实际区别在于它们的意图而不是它们的具体实现,在实践中比较接近