A modell-nézet-nézetmodell minta (MVVM) egy architekturális minta.

A minta leválasztja a grafikus felhasználói felületet és az üzleti logikát (adatmodell). A nézetmodell értékkonverter, ez a felelős az adatok átalakításáért a könnyű kezelhetőséghez és reprezentálásához. A nézetmodell inkább modell, mint nézet, de az hozza létre a megjelenítés logikáját is. Megvalósíthatja a közvetítő programtervezési mintát is, megszervezve a hozzáférést a nézet használati esetei számára.

A modell-nézet-nézetmodell Martin Fowler prezentációs modell mintájának változata; ugyanúgy vonatkoztatja el a nézet állapotát és viselkedését, de a prezentációs modell nézete nem függ a felhasználó platformjától. A modell-nézet-nézetmodell és a prezentációs modell származtatható a modell-nézet-vezérlő mintából.

Mindkét mintát Ken Cooper és Ted Peters, a Microsoft architektjei fejlesztették ki, hogy egyszerűsítsék a felhasználó interfészek eseményvezérelt programozását. John Gossman, a Microsoft WPF és Silverlight tervezője blogján jelentette be a modell-nézet-nézetmodell mintát, ami kiterjeszti a két termék képességeit.

A modell-nézet-nézetmodellre úgy is hivatkoznak, mint modell-nézet-összekötő, különösen a .NET platformján kívül. A Javában írt ZK webalkalmazás keretrendszer és a JavaScript KnockoutJS ezen a néven használja. Részei A modell a tartománymodellre utal, ami a tartalom állapotát reprezentálja (objektumorientált módban), vagy adathozzáférési réteg (adatközpontú megközelítés).

A nézet egy szerkezet, elrendezés vagy megjelenítés, amit a felhasználó a képernyőn láthat. Ez a GUI

A nézetmodell a nézet absztrakciója, ami publikus tulajdonságokat és metódusokat tartalmaz. Az MVC modell vezérlője vagy az MVP megjelenítője helyett az MVVM összekötőt tartalmaz, ami a nézetmodellben közvetít a nézet és az adatok között. A nézetmodellt az adatok állapotaként írják le a modellben.

Az összekötőt a minta implicit tartalmazza. A Microsoft solution stackjében az összekötő egy leírónyelv, a XAML. Ez segíti a programozót abban, hogy ne kelljen szószátyár kódot (boiler-plate) írnia a nézetmodell és a nézet között. Általában az ennek megvalósítására szolgáló technológia kulcsfontosságú a minta megvalósításában. Előnyei Az MVVM-et úgy tervezték, hogy a WPF adatkapcsolati függvényeket használja, hogy jobban elkülönítse a nézet fejlesztését a minta többi részétől. Virtuálisan eltávolítja a GUI kódját a nézet rétegből. A direkt kódolás helyett leírónyelvet használhatnak, és adatkapcsolatokat hozzanak létre a nézetmodellel, amit alkalmazásfejlesztők készítenek és tartanak karban. A szerepek elkülönítése miatt a nézet készítőinek nem kell foglalkozniuk az üzleti logikával. A rétegeket külön személyek vagy csapatok fejleszthetik, így jobban be lehet tartani a határidőket. Még egy fejlesztő is felgyorsul, ha ezt a mintát használja, mert a legtöbb változtatási igény a nézetet érinti, nem a logikát, így ahhoz ritkábban kell hozzányúlni.

A minta egyesíteni próbálja az MVC és az adatösszekötés előnyeit, miközben a keretrendszert az adatok összekapcsolásával olyan tisztán tartja, emennyire csak lehet. Használja az összekötőt, a nézetmodellt és az üzleti réteg adatellenőrzését a bejövő adatok ellenőrzéséhez. Ennek eredményeként a modell és a keretrendszer végzi el a legtöbb műveletet, kiküszöbölve vagy minimalizálva az alkalmazáslogikát, amivel közvetlenül kezeli a nézetet.

Hátrányai John Gossman, a minta megalkotója szerint az egyszerű műveletek a minta használata esetén lelassulnak, különösen nagyobb alkalmazások esetén. Az adatösszekötés nagyon nagy méretű alkalmazásokban a memóriafogyasztást is érezhetően megnöveli.

Jegyzetek

Fordítás

Kategória:Programtervezési minták Kategória:Architekturális minták