Model View ViewModel

Image
Koncept MVVM: Datová vazba umožňuje oddělení zobrazení (např. Označení XAML nebo HTML) a modelu pro zobrazení.

Model View ViewModel ( MVVM ) je návrhový vzor a varianta vzoru Model-View-Controller (MVC). Slouží k oddělení reprezentace a logiky uživatelského rozhraní (UI). Zaměřuje se na moderní platformy uživatelského rozhraní, jako je Cocoa , Windows Presentation Foundation (WPF), JavaFX a HTML5, protože je vyžadován mechanismus vázání dat. Ve srovnání se vzorem MVC lze zlepšit testovatelnost a snížit úsilí implementace, protože nejsou vyžadovány žádné samostatné instance řadiče . MVVM umožňuje oddělit role návrhářů a vývojářů uživatelského rozhraní, což znamená, že aplikační vrstvy mohou být vyvíjeny různými pracovními skupinami. Návrháři se mohou soustředit na uživatelskou zkušenost a vývojáři mohou psát uživatelské rozhraní a obchodní logiku .

Dějiny

MVVM byl publikován v roce 2005 Microsoft MVP John Gossman. Jedná se o specializaci Prezentačního modelu od Martina Fowlera a je s ní identická v tom, že oba vzory přesouvají stav a chování pohledu do samostatného modelu uživatelského rozhraní (prezentace nebo model pohledu). Nicméně, prezentace modelu umožňuje pohled má být generován nezávisle na UI platformy, zatímco MVVM původně má za cíl uživatelských rozhraní pomocí WPF. Nyní se však používá také v jiných oblastech, podobně jako MVC.

popis

MVVM používá funkční oddělení vzoru MVC modelu a pohledu. K dosažení uvolněné vazby mezi těmito komponentami se používá mechanismus vázání dat. Vzor MVVM má následující tři komponenty:

  • Pohled: Všechny prvky zobrazené grafickým uživatelským rozhraním ( GUI ). Váže se na vlastnosti ViewModel za účelem zobrazení a manipulace s obsahem a předávání vstupu uživatele. Vzhledem k datové vazbě lze pohled snadno vyměnit a jeho kódové pozadí je minimální.
  • ViewModel: Obsahuje logiku uživatelského rozhraní (model pohledu) a slouží jako odkaz mezi pohledem a výše uvedeným modelem. Na jedné straně si vyměňuje informace s modelem, tj. Vyvolává metody nebo služby . Na druhou stranu poskytuje zobrazení veřejné vlastnosti a příkazy . Jsou vázány na ovládací prvky podle zobrazení za účelem výstupu obsahu nebo předávání událostí uživatelského rozhraní. ViewModel nesmí mít žádné znalosti o pohledu.

Vzor MVVM lze popsat jako specifický pro technologii, protože k propojení View a ViewModel je vyžadován mechanismus vázání dat. Tato infrastruktura se často označuje jako pojivo . Podrobně se jedná o obousměrné použití vzoru pozorovatele . Binder , který dokáže navázat datovou vazbu na základě deklarativních informací, je k dispozici pro různé technologie.

.NET a JavaFX

Z hlediska WPF a Silverlight znamená MVVM, že pohled se skládá z čistě deklarativního značení XAML . Může být navržen návrháři uživatelského rozhraní pomocí Expression Blend , přičemž je třeba vytvořit pouze datové vazby k ViewModel, ale bez kódu. Logika je implementována v programovacím jazyce, jako je C # nebo VB.NET . Závislosti mezi značkami a kódem jsou minimalizovány. Totéž platí pro JavaFX. Zde lze pohled vyvinout pomocí FXML a například SceneBuilder a poté propojit s obchodní logikou v ViewModel prostřednictvím jednosměrné nebo obousměrné vazby vlastnosti.

JavaScript / HTML

Vzorek MVVM a požadovaný mechanismus datové vazby byly přeneseny do JavaScriptu v roce 2010 vývojářem Microsoftem Stevem Sandersonem . Výsledná knihovna JavaScriptu se nazývá Knockout.js . Vzor MVVM se nyní používá také v jiných rámcích JavaScriptu, například B. AngularJS . Použitím vzoru MVVM pro webové aplikace náročné na klienta se sníží úsilí o implementaci, protože jinak lze datové vazbě výrazně snížit obvyklé manuální přístupy DOM . Popis datové vazby je také deklarativní, stejně jako u produktů Microsoft založených na XAML .

Android

Vzor MVVM a datovou vazbu lze také použít při implementaci mobilních aplikací pro Android .

Výhody a nevýhody

výhody

  • Obchodní logiku lze upravovat nezávisle na reprezentaci. MVVM „dědí“ snadnější zaměnitelnost pohledu ze vzoru MVC .
  • Testovatelnost je vylepšena, protože ViewModel obsahuje logiku uživatelského rozhraní a lze ji vytvořit nezávisle na zobrazení. To znamená, že nejsou nutné žádné testy uživatelského rozhraní. Místo toho postačují testy modulů na základě kódu ViewModel.
  • Množství kódu lepidla mezi modelem a zobrazením se sníží vyloučením instancí řadiče ve srovnání se vzorem MVC.
  • Zobrazení mohou navrhovat čistí návrháři uživatelského rozhraní, zatímco vývojáři implementují modely a zobrazují modely samostatně.
  • Lze vytvořit různé pohledy, které jsou všechny propojeny se stejným ViewModel, aniž byste museli provádět změny v programování.

nevýhoda

  • Vyšší výpočetní úsilí díky zahrnutému obousměrnému pozorovateli lze hodnotit jako nevýhodu .
  • Obecný mechanismus vázání dat šetří implementaci různých řadičů. Tento mechanismus je však naprosto nezbytný k implementaci modelu MVVM.

MVVM rámce

MVVM implementují různé rámce.

Existují také pomocné knihovny, které mají usnadnit použití WPF. Tito jsou také známí jako MVVM frameworks. To zahrnuje

  • Hranol
  • Crosslight (komerční rámec od společnosti Intersoft Solutions)
  • MVVM Light
  • Caliburn. Mikro

a mnoho dalších.

Viz také

literatura

  • Raffaele Garofalo: Vytváření podnikových aplikací s Windows Presentation Foundation a Model View View Model Pattern , Microsoft Press 2011, ISBN 978-0735650923

webové odkazy

Individuální důkazy

  1. Prezentační model
  2. Definice pořadače z rámce ZK
  3. Android Data Binding Guide (anglicky)
  4. ^ John Gossman: Tales from the Smart Client: Výhody a nevýhody MV-VM. . Citováno 28. května 2012.