Model An object or entity that represents the data and manages the behavior of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).

View A visible, interactive user interface communicating and representing a state or sample of the model.

View Model A pure-code representation of the data and operations on a user interface, but not the interface itself.

Facts, Thoughts and Opinions

Difference between MVVM and MVP

In terms of implementation, MVVM shares some similarities with MVP. However, MVVM does not have any view interface, and the presenter is replaced with a "view-model" class that uses data binding to communicate with the view.

MVVM Challenges and Pitfalls

  • May be overcomplicated for simple UI.
  • Learning curve.
  • Roll my own or use a framework?
  • Data binding can be abused.
  • Data binding can be tough to troubleshoot.