MVVM par Karim PIerre Maalej

5 874 vues

Publié le

Model View ViewModel en pratique avec ses avantages/inconvénient.

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

Aucun téléchargement
Vues
Nombre de vues
5 874
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 793
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

MVVM par Karim PIerre Maalej

  1. 1. MVVM K www.kypselia.com [CocoaHeads.fr] par Karim-Pierre Maalej Paris ∙ 12 mars 2015
  2. 2. MVC
  3. 3. MVC? massive view controller
  4. 4. MVC : une bonne idée, à la base… Model Controller View
  5. 5. En réalité… Model Controller View @interface @property @property @property @end ! @implementation @end
  6. 6. Et ça pose des problèmes • Classes trop lourdes, trop complexes • Code peu testable • Difficile à maintenir • Difficile de travailler à plusieurs
  7. 7. Le Contrôleur en fait trop !
  8. 8. Le Contrôleur en fait trop • Il devrait se limiter à ce que son nom suggère : contrôler la Vue • Le reste doit être placé ailleurs • la logique métier doit retourner dans le Modèle • la préparation des données à afficher doit avoir lieu dans une autre classe : le « Modèle de Vue »
  9. 9. Modèle de Vue Model ViewModel View
  10. 10. Points forts • Compatible avec MVC • (ouf) • Isolation entre les 3 couches • le code est davantage réutilisable • les tests unitaires sont plus fiables • Code plus propre, plus clair • Excelle avec un mécanisme de binding
  11. 11. Principes • Le Modèle se concentre sur le métier, et ne connaît personne d’autre • Le Modèle de Vue connaît seulement le Modèle, il règle ses propriétés et les écoute • Le Contrôleur fait simplement le lien entre le Modèle de Vue et la Vue, il ne connaît pas le Modèle Model ViewModel ViewViewController NSObject NSObject UIViewController NSViewController UIView NSView
  12. 12. Principes Model ViewModel ViewViewController device-specific screen-specific intention sémantique de présentation UI logic and state décoration
  13. 13. Testable ! Model ViewModel Unit Test device-specific screen-specific
  14. 14. Exemple Person - firstName: - lastName: - gender: - birthDate: PersonViewController - nameLabel: - ageLabel: nameLabel.text = person.gender ? “M. ”:“Mme ” + person.firstName + “ ” + person.lastName ageLabel.text = NSDate.date().yearsFrom(person.birthDate)
  15. 15. Exemple Person - firstName: - lastName: - gender: - birthDate: PersonViewModel - nameString: String - ageString: String PersonViewController - nameLabel: - ageLabel: nameString = person.gender ? “M. ”:“Mme ” + person.firstName + “ ” + person.lastName ageString = NSDate.date().yearsFrom(person.birthDate) nameLabel.text = viewModel.nameString ageLabel.text = viewModel.ageString
  16. 16. Bindings Model ViewModel ViewViewController
  17. 17. Bindings Model ViewModel ViewViewController delegate delegate KVO KVO ReactiveCocoa ReactiveCocoa ou ou ouou
  18. 18. QA& K www.kypselia.com

×