Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails模式-装饰者与演示者_Ruby On Rails_Design Patterns_Decorator_Presenter - Fatal编程技术网

Ruby on rails RubyonRails模式-装饰者与演示者

Ruby on rails RubyonRails模式-装饰者与演示者,ruby-on-rails,design-patterns,decorator,presenter,Ruby On Rails,Design Patterns,Decorator,Presenter,最近在RubyonRails社区中,有各种各样的关于用户和演示者的讨论 两者的本质区别是什么?如果有,有什么线索告诉我应该使用哪一个?或者将两者结合使用?装饰器更像是“让我们为这个实体添加一些功能”。演示者更像是“让我们在模型/后端和视图之间搭建一座桥梁”。演示者模式有几种解释 装饰器是通用/通用的。演讲者的职责/用途范围较窄。装饰器是跨域使用的,演示器几乎总是与类似视图的功能相关 场地 我建议您检查一下- Decorator是一种设计模式,用于通过包装特定对象来扩展其功能,而不影响该对象的

最近在RubyonRails社区中,有各种各样的关于用户和演示者的讨论

两者的本质区别是什么?如果有,有什么线索告诉我应该使用哪一个?或者将两者结合使用?

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

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

  • 场地

    • 我建议您检查一下-

      Decorator是一种设计模式,用于通过包装特定对象来扩展其功能,而不影响该对象的其他实例。通常,decorator模式是的一个示例(类关闭以进行修改,但可用于扩展)


      展品和展示者图案都是一种装饰图案。

      谢谢。看起来Draper gem是presenter和decorator的混合体。@keruilin需要记住一件事:decorator应该真正能够装饰其他decorator(以及装饰组件对象),因为它们的目的之一是绕过继承的限制。(Draper不这样做)。装饰图案与复合图案在这个意义上非常相似,除了从外到内而不是从内到外处理(如果有意义的话)。我认为装饰图案是一种通用图案,而演示者是装饰图案与视图层相关的特定应用。@Smudge,draper装饰图案可以装饰其他装饰,至少好像底层模型有一个STI关系。看起来现在Draper将自己标识为表示层包装器-因此它不再是一个装饰器,而是一个表示器。来自他们的GH:“Draper为Rails应用程序添加了一个面向对象的表示逻辑层。”+1用于链接到Mike Pack的博客文章。优秀的帖子,解释了不同模式之间的差异。加1提及展览模式。我最终得到了阿维迪·格里姆的书来解释这一点。虽然,这不是解决我问题的正确方法,但它仍然是一个惊人的模式。极好的思想食粮。