Ruby on Rails模式 - 装饰者与演示者

时间:2011-10-22 14:39:10

标签: ruby-on-rails design-patterns decorator presenter

Ruby on Rails社区最近就decorators和演示者提出了各种各样的讨论。

两者之间的本质区别是什么?如果有,有哪些线索告诉我哪一个使用哪一个?或者也许两者结合使用?

2 个答案:

答案 0 :(得分:97)

装饰器更像是“让我们为这个实体添加一些功能”。演示者更像是“让我们在模型/后端和视图之间建立桥梁”。演示者模式有几种解释。

装饰器是通用的/通用的。演示者的责任/用途范围较窄。装饰器跨域使用,演示者几乎总是与视图类功能相关。

答案 1 :(得分:32)

我建议你检查一下 - Exhibit vs Presenter

Decorator是一种设计模式,用于通过包装特定对象来扩展特定对象的功能,而不会影响该对象的其他实例。通常,装饰器模式是open/close principle的一个示例(该类因修改而关闭,但可用于扩展)。

展览和演示者模式都是一种装饰模式。