过滤器和解释器设计模式看起来非常类似于面向任务。过滤器会根据某些条件筛选列表,而Interpreter对单个元素的执行操作几乎相同。
但我想知道为什么过滤器是结构而解释器是行为。有人有想法吗?
答案 0 :(得分:0)
虽然它们确实是“面向任务的”,但这两种模式实际上指的是不同的目的,让我们以SQLTable类为例。
过滤模式可用于过滤/删除/隐藏,通常会影响数据库的结构,但根本不会修改其行为。
示例1 :一旦过滤,它只是一个新的SQLTable,其行数越来越少,列可能越来越少
解释器模式属于行为模式,从某种意义上说它修改了对象的行为(通常借助于像Composite这样的结构模式来表示)。不同之处在于对结构的解释表现不同。
示例2 :一旦解释为csv-table,您的SQLTable现在可以导出为PDF文件
我猜你的误解来自这样一个事实,即他们都应用于一个结构以创造其他东西但实际的差异在于他们的意图而不是他们的具体实施在实践中相对接近