SlideShare a Scribd company logo
What? and Why ?
Agenda 
 
 Intro : Traditional UI development. 
MVVM in Deep : 
 What is MVVM? 
 Model / View Model /View. 
 Classes interaction . 
MVVM and other patterns. 
MVVM Advantages /Disadvantages. 
MVVM in Android. 
 Conclusion & Recommendations.
Traditional UI Development 
 
Simple , no problem
Traditional UI Development 
 
More work , more problems
Traditional UI Development 
 
Model View 
UI 
Layout 
Code 
behind 
Domain 
objects 
Update and get data
Traditional UI Development 
 
 Constraints: 
 Difficult to Test 
 Encourages using UI as data storage 
 Complex classes and a huge mount of code. 
 No code sharing . 
 very strong dependency between UI & logic. 
 What if you need to redesign UI?
What ? And How?
What is MVVM? 
 
 The Model View ViewModel. 
 Introduced by Microsoft in 2006. 
 Not a design pattern it is an 
architectural pattern. 
 It is a specialization of the 
presentation model pattern.
MVVM In Deep 
 
 Components to be swapped 
 Internal implementation to 
be changed without 
affecting the others 
 Components to be worked 
on independently 
 Isolated unit testing
MVVM In Deep 

Model 
 
 Non-visual classes that encapsulate the 
application's data and business logic. 
 Can’t See View Model or View. 
 Should not contain any use case–specific or user 
task–specific behavior or application logic. 
 Notifies other components of any state changes. 
 May provide data validation and error reporting
View Model 
 
 Non-visual class encapsulates the 
presentation logic required. 
 Can’t See View (no direct Reference). 
 Coordinates the view's interaction 
with the model. 
 May provide data validation and 
error reporting. 
 Notifies the view of any state changes.
View 
 
 Visual element defines the controls 
and their visual layout and styling. 
 Can see all others components. 
 Defines and handles UI visual 
behavior, such as animations or 
transitions. 
 Code behind may contain code that 
requires direct references to the 
specific UI controls.
Classes Interaction 
 
Interaction Ways 
Data Binding Commands Notifications
What about MVP & MVC ?
MVP vs. MVC vs. MVVM 

MVP vs. MVC vs. MVVM 
 
MVP (Presenter) MVC (Controller) MVVM (View Model) 
view communicates with the 
view sends input events to 
View binds directly to the 
presenter by directly calling 
the controller via a callback 
View Model. 
functions on an instance of 
or registered handler 
the presenter. 
The presenter communicates 
with the view by talking to 
an interface implemented by 
the view 
View receives updates 
directly from the model 
without having to go 
through the controller 
changes in view are 
automatically reflected in 
View Model and changes 
and Vice versa. 
Use where binding via a data 
context is not possible 
Use where the connection 
between view and the rest 
of the program is not 
always available 
Use where binding via a 
data context is possible
Why ? And Why not?
MVVM Advantages 
 
 Separation of concerns. 
 Can use unit tests. 
 Designers and developers can work 
synchronously. 
 Easy to redesign the UI . 
 Can share code easily.
MVVM Disadvantages 
 
 Harder to debug. 
 May affect performance. 
 More files to serve the architecture.
MVVM in Android 
 
MVVMCross for Xamarin.Android. 
 Dot42 Framework. (C# for android). 
 Android-binding. 
 Robo Binding
Conclusion & 
Recommendations 
 
MVVM is a suitable architectural pattern for 
business apps. 
 Use MVVM only when you need it. 
 Using MVVM is highly recommended in Cross- 
Platform development. 
MVVM is a tool not a purpose.
References 
 
 http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explained 
 http://blogs.adobe.com/paulw/archives/2007/10/presentation_pa_3.html 
 http://en.wikipedia.org/wiki/Model_View_ViewModel 
 http://aspnet.blogershub.com/Archive/2013/12/what-is-difference-Application-Architecture-and- 
Design-Patterns 
 http://msdn.microsoft.com/en-us/library/hh848246.aspx 
 http://msdn.microsoft.com/en-us/library/ms752347(v=vs.110).aspx 
 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh758320.aspx 
 http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx 
 http://joel.inpointform.net/software-development/mvvm-vs-mvp-vs-mvc-the-differences-explained/
Design Patterns VS. 
Architectural Patterns 
 
Design Patterns 
 Guidelines to avoid/solve 
common problems in 
application development. 
 Tell us how we can 
achieve a solution in 
terms of implementation. 
 Implementation Level. 
Architectural Patterns 
 Guidelines to construct 
the structure and 
behavior of applications. 
 Tell us how to arrange the 
interaction between 
application packages, 
databases, and 
middleware systems . 
 Abstract Level.
Presentation Model Pattern 
 
 Introduce by Martin Fowler in 2004. 
 An abstract of the view that is not dependent on a specific 
GUI framework. 
 State is in the presentation model. 
 Logic is in the presentation model. 
 View observes the model and updates accordingly. 
 The view “knows” about the presentation model. 
 The presentation model does not “know” about the view. 
 presentation model Also Known as application model, 
view state or logical View.
Data Binding (State) 
 
 Process that establishes a connection between the 
application UI and application logic. 
When the data changes its value, the elements that 
are bound to the data reflect changes automatically.
Data Binding (State) 
 
 Direction of the data flow: 
 One Time bindings update the target with the source 
data when the binding is created. 
 One Way bindings update the target with the source 
data when the binding is created, and any time the 
data changes. This is the default mode. 
 Two Way bindings update both the target and the 
source when either changes.
Commands (Behavior) 
 
 Provide a way to represent actions or operations that 
can be easily bound to controls in the UI. 
 Encapsulate the actual code that implements the 
action or operation . 
 Examples : Button Click , List selection changed.
Notifications 
 
 Implementing INotifyPropertyChanged and 
INotifyCollectionChanged interface. 
 OnPropertyChanged method is required to notify 
binding target properties with change in source. 
 Observable Collection needed for binding lists source.

More Related Content

PPTX
Design Pattern - MVC, MVP and MVVM
PDF
MVC Architecture
PPTX
04 activities and activity life cycle
PDF
Java Design Patterns Tutorial | Edureka
PPTX
PDF
Gof design pattern
PPTX
Delegates and events in C#
PDF
Android activities & views
Design Pattern - MVC, MVP and MVVM
MVC Architecture
04 activities and activity life cycle
Java Design Patterns Tutorial | Edureka
Gof design pattern
Delegates and events in C#
Android activities & views

What's hot (20)

PPTX
MVVM - Model View ViewModel
PPTX
Training: MVVM Pattern
PPTX
Mvvm basics
PPTX
MVVM with WPF
 
PDF
MVVM in iOS presentation
PPTX
MVx patterns in iOS (MVC, MVP, MVVM)
PPT
ASP.NET MVC Presentation
PPTX
Intro to React
PPTX
Introduction to mvc architecture
PDF
Clean Architecture
PPTX
Reactjs
PDF
Shields Up! Securing React Apps
PPTX
Acrhitecture deisign pattern_MVC_MVP_MVVM
ODP
An Introduction to Vuejs
PPTX
MVVM presentation
PPTX
Model view controller (mvc)
PPTX
PPTX
Design principles - SOLID
PPTX
Spring mvc
MVVM - Model View ViewModel
Training: MVVM Pattern
Mvvm basics
MVVM with WPF
 
MVVM in iOS presentation
MVx patterns in iOS (MVC, MVP, MVVM)
ASP.NET MVC Presentation
Intro to React
Introduction to mvc architecture
Clean Architecture
Reactjs
Shields Up! Securing React Apps
Acrhitecture deisign pattern_MVC_MVP_MVVM
An Introduction to Vuejs
MVVM presentation
Model view controller (mvc)
Design principles - SOLID
Spring mvc
Ad

Viewers also liked (20)

PPTX
Pattern MVVM avec MVVM Light Toolkit
PPTX
PPTX
Windows 8 store apps development
PPTX
Exploring MVVM, MVC, MVP Patterns - CRB Tech
PDF
Models used in iOS programming, with a focus on MVVM
PPTX
Caliburn.Micro
PDF
Mvc, mvp, mvvm...
PPTX
MVVM de A à Z
PPT
Présentation WPF
PDF
MVVM par Karim PIerre Maalej
PPTX
Varjú Zoltán - Túlélőkészlet adatáradat esetére
PPTX
MVVM Light for UWP
PPTX
Data binding
PPTX
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
PDF
MVVM Light Toolkit Works Great, Less Complicated
PPTX
MVVM Lights
PDF
Dominando o Data Binding no Android
PDF
Android Databinding Library
PDF
Testable Android Apps using data binding and MVVM
PDF
MVVM & Data Binding Library
Pattern MVVM avec MVVM Light Toolkit
Windows 8 store apps development
Exploring MVVM, MVC, MVP Patterns - CRB Tech
Models used in iOS programming, with a focus on MVVM
Caliburn.Micro
Mvc, mvp, mvvm...
MVVM de A à Z
Présentation WPF
MVVM par Karim PIerre Maalej
Varjú Zoltán - Túlélőkészlet adatáradat esetére
MVVM Light for UWP
Data binding
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVVM Light Toolkit Works Great, Less Complicated
MVVM Lights
Dominando o Data Binding no Android
Android Databinding Library
Testable Android Apps using data binding and MVVM
MVVM & Data Binding Library
Ad

Similar to MVVM ( Model View ViewModel ) (20)

PPTX
Adopting MVVM
PPTX
Mvc vs mvp vs mvvm a guide on architecture presentation patterns
KEY
What's new in Silverlight 5
PPTX
Android DesignArchitectures.pptx
PPTX
Using mvvm inside mvc in domain driven design
PDF
Introduction To MVVM
PDF
How I Accidentally Discovered MVVM
PPTX
Mvvm in the real world tccc10
PPTX
MvvmCross
PDF
MvvmCross Introduction
PDF
MvvmCross Seminar
PPTX
Mobile App Architectures & Coding guidelines
PPTX
MVP vs MVVM : a fast introduction
PPTX
Advanced MVVM in Windows 8
PDF
Portable Class Libraries and MVVM
PPTX
MVVM Presentation.pptx
PPTX
MVVM.pptx
DOCX
Mvc, mvp & mvvm (erp)
PPTX
UI Design Patterns
Adopting MVVM
Mvc vs mvp vs mvvm a guide on architecture presentation patterns
What's new in Silverlight 5
Android DesignArchitectures.pptx
Using mvvm inside mvc in domain driven design
Introduction To MVVM
How I Accidentally Discovered MVVM
Mvvm in the real world tccc10
MvvmCross
MvvmCross Introduction
MvvmCross Seminar
Mobile App Architectures & Coding guidelines
MVP vs MVVM : a fast introduction
Advanced MVVM in Windows 8
Portable Class Libraries and MVVM
MVVM Presentation.pptx
MVVM.pptx
Mvc, mvp & mvvm (erp)
UI Design Patterns

Recently uploaded (20)

PPTX
CRUISE TICKETING SYSTEM | CRUISE RESERVATION SOFTWARE
PPTX
ai tools demonstartion for schools and inter college
PDF
top salesforce developer skills in 2025.pdf
PDF
Best Practices for Rolling Out Competency Management Software.pdf
PDF
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
PDF
Build Multi-agent using Agent Development Kit
PDF
Digital Strategies for Manufacturing Companies
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PPTX
Introduction to Artificial Intelligence
PDF
Convert Thunderbird to Outlook into bulk
PDF
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
PPTX
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
AIRLINE PRICE API | FLIGHT API COST |
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPT
JAVA ppt tutorial basics to learn java programming
CRUISE TICKETING SYSTEM | CRUISE RESERVATION SOFTWARE
ai tools demonstartion for schools and inter college
top salesforce developer skills in 2025.pdf
Best Practices for Rolling Out Competency Management Software.pdf
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
Build Multi-agent using Agent Development Kit
Digital Strategies for Manufacturing Companies
Materi-Enum-and-Record-Data-Type (1).pptx
Introduction to Artificial Intelligence
Convert Thunderbird to Outlook into bulk
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
AIRLINE PRICE API | FLIGHT API COST |
Which alternative to Crystal Reports is best for small or large businesses.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
How to Migrate SBCGlobal Email to Yahoo Easily
JAVA ppt tutorial basics to learn java programming

MVVM ( Model View ViewModel )

  • 2. Agenda   Intro : Traditional UI development. MVVM in Deep :  What is MVVM?  Model / View Model /View.  Classes interaction . MVVM and other patterns. MVVM Advantages /Disadvantages. MVVM in Android.  Conclusion & Recommendations.
  • 3. Traditional UI Development  Simple , no problem
  • 4. Traditional UI Development  More work , more problems
  • 5. Traditional UI Development  Model View UI Layout Code behind Domain objects Update and get data
  • 6. Traditional UI Development   Constraints:  Difficult to Test  Encourages using UI as data storage  Complex classes and a huge mount of code.  No code sharing .  very strong dependency between UI & logic.  What if you need to redesign UI?
  • 7. What ? And How?
  • 8. What is MVVM?   The Model View ViewModel.  Introduced by Microsoft in 2006.  Not a design pattern it is an architectural pattern.  It is a specialization of the presentation model pattern.
  • 9. MVVM In Deep   Components to be swapped  Internal implementation to be changed without affecting the others  Components to be worked on independently  Isolated unit testing
  • 11. Model   Non-visual classes that encapsulate the application's data and business logic.  Can’t See View Model or View.  Should not contain any use case–specific or user task–specific behavior or application logic.  Notifies other components of any state changes.  May provide data validation and error reporting
  • 12. View Model   Non-visual class encapsulates the presentation logic required.  Can’t See View (no direct Reference).  Coordinates the view's interaction with the model.  May provide data validation and error reporting.  Notifies the view of any state changes.
  • 13. View   Visual element defines the controls and their visual layout and styling.  Can see all others components.  Defines and handles UI visual behavior, such as animations or transitions.  Code behind may contain code that requires direct references to the specific UI controls.
  • 14. Classes Interaction  Interaction Ways Data Binding Commands Notifications
  • 15. What about MVP & MVC ?
  • 16. MVP vs. MVC vs. MVVM 
  • 17. MVP vs. MVC vs. MVVM  MVP (Presenter) MVC (Controller) MVVM (View Model) view communicates with the view sends input events to View binds directly to the presenter by directly calling the controller via a callback View Model. functions on an instance of or registered handler the presenter. The presenter communicates with the view by talking to an interface implemented by the view View receives updates directly from the model without having to go through the controller changes in view are automatically reflected in View Model and changes and Vice versa. Use where binding via a data context is not possible Use where the connection between view and the rest of the program is not always available Use where binding via a data context is possible
  • 18. Why ? And Why not?
  • 19. MVVM Advantages   Separation of concerns.  Can use unit tests.  Designers and developers can work synchronously.  Easy to redesign the UI .  Can share code easily.
  • 20. MVVM Disadvantages   Harder to debug.  May affect performance.  More files to serve the architecture.
  • 21. MVVM in Android  MVVMCross for Xamarin.Android.  Dot42 Framework. (C# for android).  Android-binding.  Robo Binding
  • 22. Conclusion & Recommendations  MVVM is a suitable architectural pattern for business apps.  Use MVVM only when you need it.  Using MVVM is highly recommended in Cross- Platform development. MVVM is a tool not a purpose.
  • 23. References   http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explained  http://blogs.adobe.com/paulw/archives/2007/10/presentation_pa_3.html  http://en.wikipedia.org/wiki/Model_View_ViewModel  http://aspnet.blogershub.com/Archive/2013/12/what-is-difference-Application-Architecture-and- Design-Patterns  http://msdn.microsoft.com/en-us/library/hh848246.aspx  http://msdn.microsoft.com/en-us/library/ms752347(v=vs.110).aspx  http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh758320.aspx  http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx  http://joel.inpointform.net/software-development/mvvm-vs-mvp-vs-mvc-the-differences-explained/
  • 24. Design Patterns VS. Architectural Patterns  Design Patterns  Guidelines to avoid/solve common problems in application development.  Tell us how we can achieve a solution in terms of implementation.  Implementation Level. Architectural Patterns  Guidelines to construct the structure and behavior of applications.  Tell us how to arrange the interaction between application packages, databases, and middleware systems .  Abstract Level.
  • 25. Presentation Model Pattern   Introduce by Martin Fowler in 2004.  An abstract of the view that is not dependent on a specific GUI framework.  State is in the presentation model.  Logic is in the presentation model.  View observes the model and updates accordingly.  The view “knows” about the presentation model.  The presentation model does not “know” about the view.  presentation model Also Known as application model, view state or logical View.
  • 26. Data Binding (State)   Process that establishes a connection between the application UI and application logic. When the data changes its value, the elements that are bound to the data reflect changes automatically.
  • 27. Data Binding (State)   Direction of the data flow:  One Time bindings update the target with the source data when the binding is created.  One Way bindings update the target with the source data when the binding is created, and any time the data changes. This is the default mode.  Two Way bindings update both the target and the source when either changes.
  • 28. Commands (Behavior)   Provide a way to represent actions or operations that can be easily bound to controls in the UI.  Encapsulate the actual code that implements the action or operation .  Examples : Button Click , List selection changed.
  • 29. Notifications   Implementing INotifyPropertyChanged and INotifyCollectionChanged interface.  OnPropertyChanged method is required to notify binding target properties with change in source.  Observable Collection needed for binding lists source.