121

最近在 Ruby on Rails 社区中有各种关于装饰器和演示器的讨论。

两者的本质区别是什么?如果有,有什么线索可以告诉我使用哪一个而不是另一个?或者也许将两者结合使用?

4

2 回答 2

111

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

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

于 2011-10-22T15:14:00.173 回答
44

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

装饰器是一种设计模式,用于通过包装特定对象来扩展其功能,而不影响该对象的其他实例。一般来说,装饰器模式是 开/关原则的一个例子(类对修改关闭,但可用于扩展)。

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

于 2013-04-26T13:38:43.357 回答