le pattern view model avec symfony2

49
LE PATTERN VIEW MODEL AVEC SYMFONY2

Upload: romainkuzniak

Post on 17-Jul-2015

1.879 views

Category:

Software


5 download

TRANSCRIPT

Page 1: Le pattern View Model avec Symfony2

LE PATTERN VIEW MODEL AVEC SYMFONY2

Page 2: Le pattern View Model avec Symfony2

QUI SUIS-JE ?

Romain Kuzniak

@TurnItUpMethod

Responsable Technique chez OpenClassrooms

1 M de membres, 2,7 M de VU / 25-30 M de pages vues

Design applicatif, musique et Symfony2

Designs applicatifs avec Symfony2

Page 3: Le pattern View Model avec Symfony2

DE QUOI EST-IL QUESTION ?

Page 4: Le pattern View Model avec Symfony2

ViewControllerDomain

Page 5: Le pattern View Model avec Symfony2

ViewControllerModel

MVC

Page 6: Le pattern View Model avec Symfony2

Presentation

Layered

ViewControllerBusiness Layer

Data Layer

Page 7: Le pattern View Model avec Symfony2

Presentation

Infrastructure

Domain Driven Design

Domain Layer

Application Layer ViewController

Page 8: Le pattern View Model avec Symfony2

Presentation

ViewController

Entity

Clean Architecture

Use Case

Gateway

Implementations

Boundary

Page 9: Le pattern View Model avec Symfony2

Presentation

Vue Controller

Data

WTF Design

Kitten Layer

Unicorns Park

Page 10: Le pattern View Model avec Symfony2

CONTROLLER

Page 11: Le pattern View Model avec Symfony2

VIEW

Page 12: Le pattern View Model avec Symfony2

SIMPLE, MAIS …

Le post suivant

La liste des derniers posts vus

La liste des posts les + vus

Une recommandation de posts

Page 13: Le pattern View Model avec Symfony2

QUELS SONT LES PROBLÈMES ?

Page 14: Le pattern View Model avec Symfony2

APTITUDE AU CHANGEMENT

La présentation dépend du domaine

Un changement entraîne des changements dans toutes les couches

Too much knowledge

Page 15: Le pattern View Model avec Symfony2

LOGIQUE DANS LA VUE

Pour gérer des cas métiers

Pour gérer des variables non-définies

Pour gérer des valeurs par défaut

Page 16: Le pattern View Model avec Symfony2

LOGIQUE DANS LA VUE

Pour gérer des cas métiers

Pour gérer des variables définies

Pour gérer des valeurs par défaut

Page 17: Le pattern View Model avec Symfony2

COMPLEXITÉ DANS LE CONTROLLER

Un espace trop important est occupé pour le passage des paramètres à la vue

Page 18: Le pattern View Model avec Symfony2

COMPLEXITÉ DANS LE CONTROLLER

Un espace trop important est occupé pour le passage des paramètres à la vue

Page 19: Le pattern View Model avec Symfony2

UTILISATION DES COMPOSANTS

La visibilité des variables n’est pas claire (entre le template et celui dans lequel il est inclus)

Les composants ne sont pas facilement réutilisables

Page 20: Le pattern View Model avec Symfony2

TESTABILITÉ

Les tests nécessitent les couches du domaine

Page 21: Le pattern View Model avec Symfony2

LE PATTERN VIEW MODEL

Page 22: Le pattern View Model avec Symfony2

Plusieurs variations : Model View ViewModel, Model View Presenter, Presentation Model, MVC …

Objectif : Créer une abstraction entre les objets du domaine et la présentation

Page 23: Le pattern View Model avec Symfony2

View Model

Objet du domaine

Objet du domaine

Assembler

Page 24: Le pattern View Model avec Symfony2

LE MODEL

Représentation de la vue

Objet sans logique (DTO)

Page 25: Le pattern View Model avec Symfony2

LE MODEL

Page 26: Le pattern View Model avec Symfony2

L’ASSEMBLER

Data mapper

Page 27: Le pattern View Model avec Symfony2

L’ASSEMBLER

Page 28: Le pattern View Model avec Symfony2

LE CONTROLLER

Page 29: Le pattern View Model avec Symfony2

LA VUE

Page 30: Le pattern View Model avec Symfony2

AVANTAGES

Page 31: Le pattern View Model avec Symfony2

APTITUDE AU CHANGEMENT

Le domaine et la vue peuvent évoluer en toute indépendance

La vue ne possède que les données utiles

Page 32: Le pattern View Model avec Symfony2

LOGIQUE DANS LA VUE

La logique peut être déportée dans le View Model, l’assembler ou un service dédié

Page 33: Le pattern View Model avec Symfony2

COMPLEXITÉ DANS LE CONTROLLER

La création des données pour la vue est déportée dans l’assembler

Page 34: Le pattern View Model avec Symfony2

UTILISATION DES COMPOSANTS

A un composant correspond un View Model

La logique de construction est factorisée

Un seul paramètre à passer au template

Page 35: Le pattern View Model avec Symfony2

TESTABILITÉ

La création de stub est simple

Le front et le back ont la possibilité de travailler en parallèle

Page 36: Le pattern View Model avec Symfony2

INCONVÉNIENTS

Page 37: Le pattern View Model avec Symfony2

Plus de classes

Page 38: Le pattern View Model avec Symfony2

-totokiller38

«Avec les frameworks MVC javascript, utiliser des vues dans une application c’est so 2009.»

Page 39: Le pattern View Model avec Symfony2

-BoomBoomStriker

« Cette présentation est nulle, moi j’utilise des APIs. »

Page 40: Le pattern View Model avec Symfony2

API

Page 41: Le pattern View Model avec Symfony2

Une api est une représentation de ressources

Page 42: Le pattern View Model avec Symfony2

ViewControllerDomain

Page 43: Le pattern View Model avec Symfony2

ResourceControllerDomain

Page 44: Le pattern View Model avec Symfony2

API MODEL

Page 45: Le pattern View Model avec Symfony2

API CONTROLLER

Ou utilisez votre serializer favori

Page 46: Le pattern View Model avec Symfony2

EN BREF

Page 47: Le pattern View Model avec Symfony2

EN BREF

Créer une abstraction représentant la vue ou la ressource

Domaine et présentation varient indépendamment

La vue ne possède aucune logique

Les composants sont facilement identifiables

Testable

S’adapte totalement avec Twig

S’adapte totalement avec une api

Page 48: Le pattern View Model avec Symfony2

BIBLIOGRAPHIE

Martin Fowler - Patterns of Enterprise Application Architecture - Éditions Addison-Wesley - 2004

Derek Greer - Interactive Application Architecture Patterns

MSDN

Page 49: Le pattern View Model avec Symfony2

MERCI