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

/MVCs?/ - The Missing Layer

/MVCs?/ - The Missing Layer

Guilherme Carvalho

July 06, 2013
Tweet

Transcript

  1. Jamis Buck (37 Signals) Be aggressive! Try to keep your

    controller actions and views as slim as possible. http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model segunda-feira, 8 de julho de 13
  2. Jamis Buck (37 Signals) However, we can do better. There’s

    still a lot of noise in the view, mostly related to conditions and computations on the model objects. Let’s pull some of that into the model: Be aggressive! Try to keep your controller actions and views as slim as possible. http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model segunda-feira, 8 de julho de 13
  3. Dilemas Controladores Magros Modelos Gordos God Models 9 SRP Onde

    colocar a lógica? segunda-feira, 8 de julho de 13
  4. Lógica! •Três tipos, segundo Evans: •Lógica de aplicação •Lógica de

    domínio •Lógica de infraestrutura segunda-feira, 8 de julho de 13
  5. Dilemas Se modelos também devem ser magros, para onde vai

    a lógica? Como resolvemos? segunda-feira, 8 de julho de 13
  6. Dilemas Se modelos também devem ser magros, para onde vai

    a lógica? Como resolvemos? SENTA A PEAA segunda-feira, 8 de julho de 13
  7. PEAA •Quatro padrões para resolver o dilema: •Transaction Script •Domain

    Model •Table Module •Service Layer segunda-feira, 8 de julho de 13
  8. Service Layer Definem fronteiras com ações permitidas no sistema Várias

    interpretações Problemas? segunda-feira, 8 de julho de 13
  9. Domain Model + Service Layer = <3 <3 <3 <3

    <3 segunda-feira, 8 de julho de 13
  10. Services •Um tipo de service para cada lógica! •Application Services

    •Infrastructure Services •Domain Services segunda-feira, 8 de julho de 13
  11. Domain services Caso de uso que envolve múltiplos modelos CRUD

    NÃO! Problemas? segunda-feira, 8 de julho de 13