Model-View-ViewModel nebo MVVM je vzor návrhu softwaru určený k oddělení ovládacích prvků uživatelského rozhraní a programové logiky v systému Windows a softwaru pro webovou grafickou prezentaci. Také známý jako model-view-binder, pomáhá rozdělit programy na moduly pro vývoj a opětovné použití kódu rychlejším a jednodušším způsobem.
Odvozeno ze vzoru řadiče zobrazení modelu, MVVM pomáhá řešit různé problémy s vývojem, aby aplikace byla snáze testována, vylepšována, udržována a vyvíjena. Návrháři uživatelského rozhraní považují model za jednodušší pro spolupráci při vývoji částí aplikace.
Vzor MVVM
Vzor MVVM má tři komponenty: model, pohled a model pohledu.
Model
Model uchovává data aplikace, která jsou obvykle strukturami nebo jednoduchými třídami. Lze jej považovat za reprezentaci modelu domény aplikace, který obsahuje datový model spolu s validací a obchodní logikou. Příkladem modelových objektů jsou Plain Old CLR Objects (POCO), objekty přenosu dat (DTO) a generované entity a objekty proxy.
Pohled
Pohled definuje rozložení, strukturu a vzhled toho, co uživatelé vidí na obrazovce. Je to jediná věc, s níž jsou koncoví uživatelé obeznámeni a komunikují. V MVVM je zobrazení aktivní, což znamená, že s ním moderátor / řadič není úplně manipulován. Má události, chování a datové vazby, které vyžadují znalost základního modelu a modelu zobrazení.
Zobrazit model
Model pohledu je umístěn mezi vrstvami modelu a pohledu, kde jsou umístěny ovládací prvky pro interakci s pohledem. Zavádí Separation Presentation, nebo myšlenku oddělit nuance pohledu od modelu. Model pohledu zpřístupňuje příkazy a metody a ukazuje body k udržení stavu pohledu, spouštění událostí v pohledu a manipulaci s modelem.
Výhody MVVM
Softwaroví designéři preferují MVVM kvůli jeho výhodám:
Rozšiřitelnost
MVVM usnadňuje návrhářům přidávat nebo nahrazovat nové části kódu. Mohou předefinovat uživatelské rozhraní aplikace, aniž by se dotkli kódu, pokud je kód zcela v XAML.
Testovatelnost
Pro designéry je snazší psát testy jednotek proti základní logice pomocí MVVM. Testy jednotek modelu pohledu procvičují stejnou funkcionalitu, jakou používá pohled.
Transparentnost komunikace
Model pohledu dává řadiči pohledu průhledné rozhraní k naplnění vrstvy pohledu a interakci s vrstvou modelu. Výsledkem je transparentní komunikace mezi vrstvami aplikace.