Le patron de conception Modèle-Vue-VueModèle (Model View ViewModel en anglais) à été publié en 2005 par John Grossman de Microsoft. Il vise une séparation forte entre le modèle contenant la logique d'affaire (ou de jeu :-), la vue et l'état de cette vue (la VueModèle). Le couplage se fait par commande et événements routés afin d'éliminer les dépendances bidirectionnelles.

On a donc:
  • Une Vue : La partie apparente de notre application pour l'usager;
  • Un Modèle : Une représentation cohérente et pure des données et du comportement (logique d'affaire ou de jeu). A ce niveau, les changements d'états y sont souvent transactionnels et permanents.
  • Une VueModèle : Une représentation dédiée à la vue, prenant en charge les validations élémentaires, conversions et autre adaptations du modèle à la vue. C'est une forme de mémoire tampon. Cette représentation étant couplée à la vue et au modèle, les changements d'états y sont transitoires. Ils sont, soit un reflet adapté du modèle, soit l'écho d'un changement d'état de la vue.
    On utilise la VueModèle pour prévisualiser l'effet d'une action, pour inter-relier le comportement des composantes de la vue et au besoin pour préparer les changements d'états complexes du modèle en autorisant temporairement des inconsistances là où le modèle ne le permet pas.
Plus de détails sur Wikipédia