ТЛ; др :
Используйте докладчика в этом сценарии
Разработка :
Декоратор - это структурный шаблон проектирования, который оборачивает другие объекты и добавляет новые функциональные возможности без необходимости расширять класс, который вы украшаете.
A 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"