SlideShare une entreprise Scribd logo
1  sur  13
Plan
0   Histoire
0   Intention
0   Structure
0   MVVM
    0 Le Model
    0 Le View
    0 Le ViewModel
0   Collaboration
0   Conséquences
0   Utilisations connues
0   Patrons de Design en relation
0   Conclusion
Histoire
•   2004 Martin Fowler – Presentation Model (PM)
      Une séparation de son état et de son comportement
      Indépendamment d’un Framework UI
•   2005 John Gossman dévoile le patron MVVM
      Comme extension du patron MVC
•   2008 John change d’avis
      MVVM est identique au PM
      Dépendant au WPF/Silverlight
Intention
•   Les préoccupations de séparation
      View
      L’état et le comportement du View
      Données
•   Test unitaire et les tests de l’interface graphique (UI)
•   Maintenance
•   Extensibilité
•   Permet le flux de travail designer/développeur
•   Profite du « data binding » du WPF/Silverlight
Structure
                                      View                ViewModel



• Model                                                      Model
    Aucune référence du View ou du ViewModel
• View
    Peut avoir une référence du ViewModel (pas obligatoire)
    Aucune référence du Model
• ViewModel
    Référencé à partir du Model
    Peut avoir une référence à partir du View
Le Model
                                      View      ViewModel
public class Person : INotifyPropertyChanged,
IDataErrorInfo
{                                                 Model
   private string _firstName;
   private string FirstName
{
   get { return _firstName; }
    set
    {
          _firstName = value;
          OnPropertyChanged(‘’FirstName’’);
    }
}
…
Le ViewModel
                                     View       ViewModel
public class MainViewModel :
INotifyPropertyChanged, {
   private Person _modelPerson;                   Model
   private Person ModelPerson
{
   get { return _modelPerson; }
    set
    {
          _modelPerson = value;
          OnPropertyChanged(‘’ModelPerson’’);
    }
}
…
Le View
                                                   View         ViewModel
<!– First Name -->
<TextBlock Text=‘’First Name:’’ Margin=‘’5’’ />
< TextBox Grid.Column=‘’1’’ Margin=‘’5’’/>
                                                                  Model
<!– Last Name -->
<TextBlock Grid.Row=‘’1’’ Text=‘’Last Name:’’ Margin=‘’5’’ />
< TextBox Grid.Row=‘’1’’ Grid.Column=‘’1’’ Margin=‘’5’’/>

<!– UpdatedDate-->
<TextBlock Grid.Row=‘’2’’ Text=‘’Age:’’ Margin=‘’5’’ />
< TextBox Grid.Row=‘’2’’ Grid.Column=‘’1’’ Margin=‘’5’’/>


<!– Save Button-->
<Button Grid.Row=‘’3’’ Grid.ColumnSpan=‘’5’’ Content=‘’Save’’
Margin=‘’10’’ />
Collaboration
                                   View            ViewModel

• Model
    Les données
                                                     Model
• View
    Binding au ViewModel à traver DataContext
• ViewModel
    Expose le Model comme propriété ou commande
    Doit implémenter INotifyPropertyChanged
Conséquences
0 Avantages
   • Réduit le code relatif
   • Pas besoin de changer le Model pour supporter le View
   • Les Designers design, les développeurs développent
   • Réduit le temps de développement
0 Inconvénients
   • Crée plus de fichiers
   • Les tâches simples peuvent devenir plus compliquées
   • Manque de standardisation
   • Spécifique au plateformes WPF et Silverlight
Utilisations connues
0 Microsoft
0 UFC Gym
0 US Army
0 Family.Show
0 Prism Reference Implementation
0 AQUA
0 Plusieurs Framework
   • MVVM Light Toolkit
   • Caliburn
   • Cinch
   • Onyx
   • MVVM Foundation
   • Etc…
Patrons de Design en relation
•   Model View Presenter (MVP)
•   Model View Controller (MVC)
•   Presentation Model (PM)
Conclusion
•   Séparation des préoccupations
•   Test et Maintenance
•   View and ViewModel binding
•   Implémentation

Contenu connexe

Tendances

Tendances (7)

Java Server Faces - Beyond
Java Server Faces - BeyondJava Server Faces - Beyond
Java Server Faces - Beyond
 
Jquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter BootstrapJquery Mobile vs Twitter Bootstrap
Jquery Mobile vs Twitter Bootstrap
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
EcmaScript
EcmaScriptEcmaScript
EcmaScript
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
Angluars js
Angluars jsAngluars js
Angluars js
 
Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
 

En vedette (7)

Sab stic
Sab sticSab stic
Sab stic
 
The coming open source revolution (in your local libraries)
The coming open source revolution (in your local libraries)The coming open source revolution (in your local libraries)
The coming open source revolution (in your local libraries)
 
30082010presentatie ontwerpend leren
30082010presentatie ontwerpend leren30082010presentatie ontwerpend leren
30082010presentatie ontwerpend leren
 
A return to the physical: How libraries serve virtual and mobile communities
A return to the physical: How libraries serve virtual and mobile communitiesA return to the physical: How libraries serve virtual and mobile communities
A return to the physical: How libraries serve virtual and mobile communities
 
SAB MiniCD BC (1)
SAB MiniCD BC (1)SAB MiniCD BC (1)
SAB MiniCD BC (1)
 
Virtually serving the unserved
Virtually serving the unservedVirtually serving the unserved
Virtually serving the unserved
 
SAB cristal 410 concentrate
SAB cristal 410 concentrateSAB cristal 410 concentrate
SAB cristal 410 concentrate
 

Similaire à Model view-view model (mvvm)

01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanshipMichael Bertocchi
 
01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanshipMichael Bertocchi
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à zArnaud Auroux
 
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Addi Ait-Mlouk
 
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1Addi Ait-Mlouk
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveRomainKuzniak
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfSliimAmiri
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursHoracio Gonzalez
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopPrestaShop
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Sylvain Wallez
 
02 presentation-application-normal
02 presentation-application-normal02 presentation-application-normal
02 presentation-application-normalMichael Bertocchi
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010MD DAY
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJSVISEO
 
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...CERTyou Formation
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 

Similaire à Model view-view model (mvvm) (20)

Introducthion mvvm avec wpf
Introducthion mvvm avec wpfIntroducthion mvvm avec wpf
Introducthion mvvm avec wpf
 
01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship
 
01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship
 
Prezentare ASP.Net.pptx
Prezentare ASP.Net.pptxPrezentare ASP.Net.pptx
Prezentare ASP.Net.pptx
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
 
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo (OpenERP) Partie 1
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
 
Backbonejs presentation
Backbonejs presentationBackbonejs presentation
Backbonejs presentation
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - CoursENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - Cours
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShop
 
Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011Play Framework - Toulouse JUG - nov 2011
Play Framework - Toulouse JUG - nov 2011
 
02 presentation-application-normal
02 presentation-application-normal02 presentation-application-normal
02 presentation-application-normal
 
Objecteering mdday2010
Objecteering mdday2010Objecteering mdday2010
Objecteering mdday2010
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJS
 
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...
M10748 formation-microsoft-system-center-2012-configuration-manager-sccm-depl...
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 

Model view-view model (mvvm)

  • 1.
  • 2. Plan 0 Histoire 0 Intention 0 Structure 0 MVVM 0 Le Model 0 Le View 0 Le ViewModel 0 Collaboration 0 Conséquences 0 Utilisations connues 0 Patrons de Design en relation 0 Conclusion
  • 3. Histoire • 2004 Martin Fowler – Presentation Model (PM)  Une séparation de son état et de son comportement  Indépendamment d’un Framework UI • 2005 John Gossman dévoile le patron MVVM  Comme extension du patron MVC • 2008 John change d’avis  MVVM est identique au PM  Dépendant au WPF/Silverlight
  • 4. Intention • Les préoccupations de séparation  View  L’état et le comportement du View  Données • Test unitaire et les tests de l’interface graphique (UI) • Maintenance • Extensibilité • Permet le flux de travail designer/développeur • Profite du « data binding » du WPF/Silverlight
  • 5. Structure View ViewModel • Model Model  Aucune référence du View ou du ViewModel • View  Peut avoir une référence du ViewModel (pas obligatoire)  Aucune référence du Model • ViewModel  Référencé à partir du Model  Peut avoir une référence à partir du View
  • 6. Le Model View ViewModel public class Person : INotifyPropertyChanged, IDataErrorInfo { Model private string _firstName; private string FirstName { get { return _firstName; } set { _firstName = value; OnPropertyChanged(‘’FirstName’’); } } …
  • 7. Le ViewModel View ViewModel public class MainViewModel : INotifyPropertyChanged, { private Person _modelPerson; Model private Person ModelPerson { get { return _modelPerson; } set { _modelPerson = value; OnPropertyChanged(‘’ModelPerson’’); } } …
  • 8. Le View View ViewModel <!– First Name --> <TextBlock Text=‘’First Name:’’ Margin=‘’5’’ /> < TextBox Grid.Column=‘’1’’ Margin=‘’5’’/> Model <!– Last Name --> <TextBlock Grid.Row=‘’1’’ Text=‘’Last Name:’’ Margin=‘’5’’ /> < TextBox Grid.Row=‘’1’’ Grid.Column=‘’1’’ Margin=‘’5’’/> <!– UpdatedDate--> <TextBlock Grid.Row=‘’2’’ Text=‘’Age:’’ Margin=‘’5’’ /> < TextBox Grid.Row=‘’2’’ Grid.Column=‘’1’’ Margin=‘’5’’/> <!– Save Button--> <Button Grid.Row=‘’3’’ Grid.ColumnSpan=‘’5’’ Content=‘’Save’’ Margin=‘’10’’ />
  • 9. Collaboration View ViewModel • Model  Les données Model • View  Binding au ViewModel à traver DataContext • ViewModel  Expose le Model comme propriété ou commande  Doit implémenter INotifyPropertyChanged
  • 10. Conséquences 0 Avantages • Réduit le code relatif • Pas besoin de changer le Model pour supporter le View • Les Designers design, les développeurs développent • Réduit le temps de développement 0 Inconvénients • Crée plus de fichiers • Les tâches simples peuvent devenir plus compliquées • Manque de standardisation • Spécifique au plateformes WPF et Silverlight
  • 11. Utilisations connues 0 Microsoft 0 UFC Gym 0 US Army 0 Family.Show 0 Prism Reference Implementation 0 AQUA 0 Plusieurs Framework • MVVM Light Toolkit • Caliburn • Cinch • Onyx • MVVM Foundation • Etc…
  • 12. Patrons de Design en relation • Model View Presenter (MVP) • Model View Controller (MVC) • Presentation Model (PM)
  • 13. Conclusion • Séparation des préoccupations • Test et Maintenance • View and ViewModel binding • Implémentation