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...
DE QUOI EST-IL QUESTION ?
ViewControllerDomain
ViewControllerModel
MVC
Presentation
Layered
ViewController
Business
Layer
Data
Layer
Presentation
Infrastructure
Domain Driven Design
Domain
Layer
Application
Layer
ViewController
Presentation
ViewController
Entity
Clean Architecture
Use Case
Gateway
Implementations
Boundary
Presentation
Vue Controller
Data
WTF Design
Kitten
Layer
Unicorns
Park
CONTROLLER
VIEW
SIMPLE, MAIS …
Le post suivant
La liste des derniers posts vus
La liste des posts les + vus
Une recommandation de posts
…
QUELS SONT LES PROBLÈMES ?
APTITUDE AU CHANGEMENT
La présentation dépend du domaine
Un changement entraîne des changements dans
toutes les couches
To...
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
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
COMPLEXITÉ DANS LE CONTROLLER
Un espace trop important est occupé pour le
passage des paramètres à la vue
COMPLEXITÉ DANS LE CONTROLLER
Un espace trop important est occupé pour le
passage des paramètres à la vue
UTILISATION DES COMPOSANTS
La visibilité des variables n’est pas claire (entre
le template et celui dans lequel il est inc...
TESTABILITÉ
Les tests nécessitent les couches du domaine
LE PATTERN VIEW MODEL
Plusieurs variations : Model View ViewModel,
Model View Presenter, Presentation Model,
MVC …
Objectif : Créer une abstract...
View
Model
Objet du
domaine
Objet du
domaine
Assembler
LE MODEL
Représentation de la vue
Objet sans logique (DTO)
LE MODEL
L’ASSEMBLER
Data mapper
L’ASSEMBLER
LE CONTROLLER
LA VUE
AVANTAGES
APTITUDE AU CHANGEMENT
Le domaine et la vue peuvent évoluer en toute
indépendance
La vue ne possède que les données utiles
LOGIQUE DANS LA VUE
La logique peut être déportée dans le View
Model, l’assembler ou un service dédié
COMPLEXITÉ DANS LE CONTROLLER
La création des données pour la vue est
déportée dans l’assembler
UTILISATION DES COMPOSANTS
A un composant correspond un View Model
La logique de construction est factorisée
Un seul param...
TESTABILITÉ
La création de stub est simple
Le front et le back ont la possibilité de travailler
en parallèle
INCONVÉNIENTS
Plus de classes
-totokiller38
«Avec les frameworks MVC javascript, utiliser des
vues dans une application c’est so 2009.»
-BoomBoomStriker
« Cette présentation est nulle, moi j’utilise des APIs. »
API
Une api est une représentation de ressources
ViewControllerDomain
ResourceControllerDomain
API MODEL
API CONTROLLER
Ou utilisez votre serializer favori
EN BREF
EN BREF
Créer une abstraction représentant la vue ou la ressource
Domaine et présentation varient indépendamment
La vue ne...
BIBLIOGRAPHIE
Martin Fowler - Patterns of Enterprise
Application Architecture - Éditions Addison-
Wesley - 2004
Derek Gree...
MERCI
Prochain SlideShare
Chargement dans…5
×

Le pattern View Model avec Symfony2

4 835 vues

Publié le

The View Model pattern with Symfony2

Publié dans : Logiciels
0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 835
Sur SlideShare
0
Issues des intégrations
0
Intégrations
956
Actions
Partages
0
Téléchargements
79
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le pattern View Model avec Symfony2

  1. 1. LE PATTERN VIEW MODEL AVEC SYMFONY2
  2. 2. 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
  3. 3. DE QUOI EST-IL QUESTION ?
  4. 4. ViewControllerDomain
  5. 5. ViewControllerModel MVC
  6. 6. Presentation Layered ViewController Business Layer Data Layer
  7. 7. Presentation Infrastructure Domain Driven Design Domain Layer Application Layer ViewController
  8. 8. Presentation ViewController Entity Clean Architecture Use Case Gateway Implementations Boundary
  9. 9. Presentation Vue Controller Data WTF Design Kitten Layer Unicorns Park
  10. 10. CONTROLLER
  11. 11. VIEW
  12. 12. SIMPLE, MAIS … Le post suivant La liste des derniers posts vus La liste des posts les + vus Une recommandation de posts …
  13. 13. QUELS SONT LES PROBLÈMES ?
  14. 14. APTITUDE AU CHANGEMENT La présentation dépend du domaine Un changement entraîne des changements dans toutes les couches Too much knowledge
  15. 15. 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
  16. 16. 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
  17. 17. COMPLEXITÉ DANS LE CONTROLLER Un espace trop important est occupé pour le passage des paramètres à la vue
  18. 18. COMPLEXITÉ DANS LE CONTROLLER Un espace trop important est occupé pour le passage des paramètres à la vue
  19. 19. 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
  20. 20. TESTABILITÉ Les tests nécessitent les couches du domaine
  21. 21. LE PATTERN VIEW MODEL
  22. 22. 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
  23. 23. View Model Objet du domaine Objet du domaine Assembler
  24. 24. LE MODEL Représentation de la vue Objet sans logique (DTO)
  25. 25. LE MODEL
  26. 26. L’ASSEMBLER Data mapper
  27. 27. L’ASSEMBLER
  28. 28. LE CONTROLLER
  29. 29. LA VUE
  30. 30. AVANTAGES
  31. 31. APTITUDE AU CHANGEMENT Le domaine et la vue peuvent évoluer en toute indépendance La vue ne possède que les données utiles
  32. 32. LOGIQUE DANS LA VUE La logique peut être déportée dans le View Model, l’assembler ou un service dédié
  33. 33. COMPLEXITÉ DANS LE CONTROLLER La création des données pour la vue est déportée dans l’assembler
  34. 34. UTILISATION DES COMPOSANTS A un composant correspond un View Model La logique de construction est factorisée Un seul paramètre à passer au template
  35. 35. TESTABILITÉ La création de stub est simple Le front et le back ont la possibilité de travailler en parallèle
  36. 36. INCONVÉNIENTS
  37. 37. Plus de classes
  38. 38. -totokiller38 «Avec les frameworks MVC javascript, utiliser des vues dans une application c’est so 2009.»
  39. 39. -BoomBoomStriker « Cette présentation est nulle, moi j’utilise des APIs. »
  40. 40. API
  41. 41. Une api est une représentation de ressources
  42. 42. ViewControllerDomain
  43. 43. ResourceControllerDomain
  44. 44. API MODEL
  45. 45. API CONTROLLER Ou utilisez votre serializer favori
  46. 46. EN BREF
  47. 47. 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
  48. 48. BIBLIOGRAPHIE Martin Fowler - Patterns of Enterprise Application Architecture - Éditions Addison- Wesley - 2004 Derek Greer - Interactive Application Architecture Patterns MSDN
  49. 49. MERCI

×