【问题标题】:Should I use a presenter or a decorator?我应该使用演示者还是装饰者?
【发布时间】:2019-10-24 22:00:23
【问题描述】:

因为我是 Rails 世界的初学者,所以我对这些术语有点迷失了...... 我的标题中有一些代码,与模型无关。我只想根据用户所在的页面显示或不显示。 我知道这有点简单,助手也会做得很好,但是是否可以将代码放入演示者或装饰者中? 我什么时候必须使用它们?我还真没看懂。

【问题讨论】:

    标签: ruby-on-rails-5 decorator presenter


    【解决方案1】:

    tl;博士: 在这种情况下使用 Presenter

    阐述装饰器是一种结构设计模式,它包装其他对象并添加新功能,而无需扩展您正在装饰的类。

    另一方面,Presenter 应该使用您正在展示的对象的方法,以您希望展示的方式格式化数据。例如。你有一个User 模型:

    class User < ActiveRecord:Base
      # it has first_name and last_name columns
    end
    

    并且您想在视图中显示全名而没有太多逻辑。您可以像这样创建UserPresenter 类:

    class UserPresenter
      def initialize(user)
        @user = user
      end
    
      def full_name
        "#{@user.last_name} #{@user.first_name}"
      end
    end
    

    因此,您无需分别调用这两个属性,只需使用演示者即可

    user = User.new(first_name: "John", last_name: "Doe")
    user_presenter = UserPresenter.new(user)
    user_presenter.full_name #=> "Doe John"
    

    【讨论】:

    • @EdiJunior - 没问题。我强烈建议在开始使用 Ruby on Rails 之前学习一点 Ruby(许多年轻开发人员的常见错误是先学习框架,然后再学习语言)。之后,拿起 Russ Olsen 的“Ruby 中的设计模式”一书,然后在 youtube 上收听 Sandi Metz。你不会后悔的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2017-08-29
    • 2015-05-22
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    相关资源
    最近更新 更多