SlideShare une entreprise Scribd logo
Model view-view model (mvvm)
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

PPTX
MVVM de A à Z
PPTX
PPTX
Pattern MVVM avec MVVM Light Toolkit
PPTX
Les framework mvc
PPTX
jQuery vs AngularJS
PPTX
Architecture mvc
PDF
MVVM par Karim PIerre Maalej
PDF
comprendre angularJS en 10 minutes
MVVM de A à Z
Pattern MVVM avec MVVM Light Toolkit
Les framework mvc
jQuery vs AngularJS
Architecture mvc
MVVM par Karim PIerre Maalej
comprendre angularJS en 10 minutes

Tendances (7)

PDF
Java Server Faces - Beyond
PPTX
Jquery Mobile vs Twitter Bootstrap
PPTX
Retour d'experience projet AngularJS
PPTX
EcmaScript
PPTX
AngularJS - Présentation (french)
PDF
Angluars js
PPTX
Cours wpf avancé
Java Server Faces - Beyond
Jquery Mobile vs Twitter Bootstrap
Retour d'experience projet AngularJS
EcmaScript
AngularJS - Présentation (french)
Angluars js
Cours wpf avancé
Publicité

En vedette (7)

PDF
The coming open source revolution (in your local libraries)
PPT
30082010presentatie ontwerpend leren
PDF
A return to the physical: How libraries serve virtual and mobile communities
PDF
SAB MiniCD BC (1)
PDF
Virtually serving the unserved
PDF
SAB cristal 410 concentrate
The coming open source revolution (in your local libraries)
30082010presentatie ontwerpend leren
A return to the physical: How libraries serve virtual and mobile communities
SAB MiniCD BC (1)
Virtually serving the unserved
SAB cristal 410 concentrate
Publicité

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

PPTX
Introducthion mvvm avec wpf
PPTX
Tech days 2012 mvvm de a à z
PPTX
Chapitre 3--------------------------.pptx
PPTX
les style d'architecture
PPTX
Wpf et Silverlight
PPT
Présentation WPF
PPTX
Améliorer votre productivité XAML en entreprise !
PPTX
Améliorer votre productivité XAML en entreprise !
PDF
Le pattern View Model avec Symfony2
PDF
Chp3 - Architecture Logicielle des Applications Mobiles
PPTX
L'architecture MVVM avec KnockoutJS
PDF
Créer une application web en asp.net mvc 2
PPTX
Silverlight
PPTX
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Introducthion mvvm avec wpf
Tech days 2012 mvvm de a à z
Chapitre 3--------------------------.pptx
les style d'architecture
Wpf et Silverlight
Présentation WPF
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
Le pattern View Model avec Symfony2
Chp3 - Architecture Logicielle des Applications Mobiles
L'architecture MVVM avec KnockoutJS
Créer une application web en asp.net mvc 2
Silverlight
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...

Model view-view model (mvvm)

  • 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