Model-View-ViewModel, of MVVM, is een softwareontwerppatroon bedoeld om de bedieningselementen van de gebruikersinterface en de programmeerlogica in Windows en web grafische presentatiesoftware te scheiden. Ook bekend als model-view-binder, helpt het programma’s op te splitsen in modules voor de ontwikkeling en hergebruik van code op een snellere en eenvoudigere manier.
MVVM is afgeleid van het Model View Controller-patroon en helpt bij het aanpakken van verschillende ontwikkelingsproblemen om een applicatie gemakkelijker te testen, verfijnen, onderhouden en ontwikkelen. UI-ontwerpers vinden het model gemakkelijker om samen te werken bij het ontwikkelen van de onderdelen van een app.
Het MVVM-patroon
Het MVVM-patroon bestaat uit drie componenten: model, weergave en het weergavemodel.
Model
Het model bevat de toepassingsgegevens die gewoonlijk structs of simple classes zijn. Het kan worden beschouwd als een weergave van het domeinmodel van de app, met daarin een datamodel, validatie en bedrijfslogica. Voorbeelden van modelobjecten zijn gewone oude CLR-objecten (POCO’s), gegevensoverdrachtobjecten (DTO’s) en gegenereerde entiteits- en proxy-objecten.
View
De weergave bepaalt de lay-out, structuur en het uiterlijk van wat de gebruikers op het scherm zien. Het is het enige dat eindgebruikers kennen en waarmee ze communiceren. In MVVM is de weergave actief, wat betekent dat deze niet volledig wordt gemanipuleerd door een presentator / controller. Het heeft gebeurtenissen, gedragingen en gegevensbindingen die kennis van het onderliggende model en weergavemodel vereisen.
Bekijk model
Het aanzichtmodel bevindt zich tussen het model en de aanzichtlagen, waarin de bedieningselementen zijn ondergebracht voor interactie met het aanzicht. Het introduceert Presentation Separation, of het idee om de nuances van het aanzicht gescheiden te houden van het model. Het weergavemodel legt opdrachten en methoden bloot, en punten om de status van de weergave te behouden, gebeurtenissen in de weergave te activeren en het model te manipuleren.
Voordelen van MVVM
Softwareontwerpers geven de voorkeur aan MVVM vanwege de voordelen:
rekbaarheid
MVVM maakt het voor ontwerpers gemakkelijk om nieuwe stukjes code toe te voegen of te vervangen. Ze kunnen de gebruikersinterface van de app opnieuw definiëren zonder de code aan te raken, zolang de code volledig in XAML is.
Testbaarheid
Het is gemakkelijker voor ontwerpers om unit-tests te schrijven tegen de kernlogica met MVVM. De unit-tests van het weergavemodel oefenen dezelfde functionaliteit uit die door de weergave wordt gebruikt.
Transparantie in communicatie
Het weergavemodel geeft de weergavecontroller een transparante interface om de weergavelaag te vullen en te communiceren met de modellaag. Dit resulteert in de transparante communicatie tussen de lagen van een applicatie.