Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Decorator & Presenter Design Pattern

Decorator & Presenter Design Pattern

Let have a short look at the Decorator & Presenter Design Pattern with the Draper Gem.

DonSchado

May 21, 2014
Tweet

More Decks by DonSchado

Other Decks in Programming

Transcript

  1. implement procedural helpers or adding view related bulk to your

    models? Solutions? helpers are shit making fat models even fatter?
 No class should be fat. Ever.
  2. Why are helpers shit? http://nicksda.apotomo.de/2011/10/rails-misapprehensions-helpers-are-shit/ „all helpers are mixed into

    the view automatically (…) [and are] globally available“ „There is nothing wrong with having those little helpers in your view. What I don’t like is that they are called without an obvious receiver – they look and feel like functions. This is wrong.“
  3. Why are helpers shit? http://blog.steveklabnik.com/posts/2011-09-09-better-ruby-presenters „No seriously, helpers suck“ „Why

    is it in Ruby that everything is an object, even integers, yet as soon as we need to format a date, we all turn into Dijkstra and bust out structured programming?“
  4. Decorator pattern (also known as wrapper) is a design pattern

    that allows to dynamically add behavior to an individual object. can be used on it’s own or wrapped by decorator each decorator HAS_A (wraps) a component (holds a reference) (composition) (inheritance)
  5. The decorator wraps the model, and deals only with presentational

    concerns. In the controller, you decorate the article before handing it off to the view
  6. A presenter is a special case of the "Decorator design

    pattern". http://sokolmichael.com/posts/2012-01-14-model-view-controller-presenter-better-separation-of-concern MVCP - Better Separation of Concern
  7. http://blog.jayfields.com/2007/03/rails-presenter-pattern.html Presenter was inspired by the various GUI patterns documented

    by Martin Fowler. An architecture that uses the Presenter pattern provides view specific data as attributes of an instance of the Presenter. The Presenter's state is an aggregation of model and user entered data.