Ruby on Rails社区最近就decorators和演示者提出了各种各样的讨论。
两者之间的本质区别是什么?如果有,有哪些线索告诉我哪一个使用哪一个?或者也许两者结合使用?
答案 0 :(得分:97)
装饰器更像是“让我们为这个实体添加一些功能”。演示者更像是“让我们在模型/后端和视图之间建立桥梁”。演示者模式有几种解释。
装饰器是通用的/通用的。演示者的责任/用途范围较窄。装饰器跨域使用,演示者几乎总是与视图类功能相关。
答案 1 :(得分:32)
我建议你检查一下 - Exhibit vs Presenter。
Decorator是一种设计模式,用于通过包装特定对象来扩展特定对象的功能,而不会影响该对象的其他实例。通常,装饰器模式是open/close principle的一个示例(该类因修改而关闭,但可用于扩展)。
展览和演示者模式都是一种装饰模式。