Rozdíl mezi MVVM a MVP

Účelem vývoje softwaru je vytvářet řešení, která řeší potřeby a problémy uživatelů a podniků. K dosažení tohoto cíle, různé technologie a vzory architektury, jako je Model-View-ViewModel (MVVM) a Model-View-Presenter (MVP) Jsou používány.

Stejně jako u všeho, co se vyrábí, je prvním krokem fáze plánování a návrhu. Proces návrhu softwaru může být specifikací založenou na upřednostňované sadě technologických nástrojů a může zahrnovat veškerou činnost od koncepce, plánování, přes implementaci, aktualizace a úpravy..

Pokrývá architektonický návrh na nízké a vysoké úrovni založený na vybraných vzorech architektury a mapuje opakovaně použitelná řešení pomocí návrhových vzorů..

Struktura softwarové aplikace

Softwarová architektura definuje strukturu aplikace, která splňuje technické, provozní a uživatelské požadavky a odkazuje na to, jak je kód organizován a spravován.

Rozhodování o architektuře softwarové aplikace je rozhodující, protože se nejedná o snadnou, proměnlivou část aplikace, která je již vyvinuta; proto musí být před zahájením programování rozhodnuto o architektonickém vzoru.

Architektonické vzory se poněkud liší od vzorů designu, protože jejich rozsah je mnohem širší tím, že řeší více technických problémů, jako je výkon hardwaru a omezení a vysoká dostupnost. Příklady různých vzorů architektury jsou MVC, MVVM a MVP.

Na druhé straně jsou návrhové vzory formalizovanými osvědčenými postupy, které usnadňují opakovaně použitelný objektově orientovaný vývoj a které se snadněji udržují a mění než architektura aplikace.. 

Vzory architektury

Řadič zobrazení modelu (MVC) byl jedním z prvních architektonických vzorů vyvinutých pro webové aplikace a získal popularitu od poloviny do konce devadesátých let, zejména u komunity Java.

Novější rámce, jako Django pro Python a Rails (Ruby on Rails), se silně zaměřují na rychlé nasazení, a proto MVC zaujímá tržní podíl jako velkou přitažlivost architektonických vzorů.

Vývoj uživatelského rozhraní tradičně obsahoval spoustu kódu pro zpracování složité logiky, takže byly navrženy vzory architektury tak, aby se kód na úrovni uživatelského rozhraní (UI) snížil, což je více „čisté“ a spravovatelné.

Takže se vzorem MVC se webová aplikace skládá z

  • Modelka (data)
  • Pohled (rozhraní pro prohlížení a manipulaci s daty)
  • Ovladač (operace a akce provedené na datech)

Modelka zpracovává data a obchodní logiku a existují Ne závislosti mezi Modelka a Ovladač nebo Pohled.

Pohled prezentuje data uživateli v podporovaném formátu a požadovaném rozvržení a kdy Ovladač přijímá žádosti uživatelů (načíst data), volá příslušné zdroje potřebné k dokončení požadavku.

Použijte tento vzorec k vytvoření online knihkupectví.

Uživatelé mohou vyhledávat, prohlížet, registrovat a nakupovat knihy a spravovat jejich profily a seznamy knih. Když uživatel klikne na kategorii SCI-FI, všechny související knihy by se měly zobrazit jako dostupné.

Ovladače zpracovat akce, které spravují knihy (seznam, přidání, zobrazení atd.). Může existovat více Ovladače s jedním hlavním Ovladač „směrování provozu“.

Pro tento příklad, Ovladač se jmenuje controller_books.php a Modelka (např. model_books.php) zpracovává data a logiku související s knihami.

Konečně, jiné Zobrazení bude třeba, například při přidávání knih do online košíku nebo při prohlížení detailů knihy s obrázky a recenzemi.

controller_books.php obdrží akci (žádost uživatele) z hlavního Ovladač (např. index.php). controller_books.php analyzuje požadavek a volá model_books.php (data) pro vrácení seznamu knih SCI-FI.

Odpovědnost Modelka je poskytovat tyto informace pomocí jakékoli logiky, která byla použita (pomocí vyhledávacích filtrů). Ovladač pak vezme informace a předá je příslušným Pohled (zobrazení vyhledávání, zobrazení tisku, zobrazení podrobností atd.) a informace jsou prezentovány (prostřednictvím Pohled) uživateli, který žádost inicioval.

Toto jsou základy vzoru MVC, který vyvinul tření variací vzorů architektury, jako je Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller (HMVC), a Model-View-Adapter (MVA) atd.

Vzor MVP

Model-View-Presenter (MVP)

MVP vzor už nějakou dobu existuje a je variantou MVC. Byl navržen speciálně pro automatizaci testů, kde cílem bylo zvýšit množství kódu, který lze testovat pomocí automatizace, a vzor řeší některé problémy s prezentační vrstvou a izoluje obchodní logiku od uživatelského rozhraní.

Na obrazovce je pohled, data, která se zobrazí, jsou model a předvádějící je spojí dohromady.

MVP zahrnuje následující komponenty se samostatnými povinnostmi:

  • Modelka (definuje data, která mají být zobrazena)
  • Pohled (zobrazuje data z Modelu a směruje požadavky uživatelů na Presenter).
  • Moderátor (interaguje mezi pohledem a modelem a spojuje je dohromady)

Pohled (webová stránka) zobrazuje a spravuje ovládací prvky stránky předáváním událostí (požadavky uživatelů) na webovou stránku Moderátor které byly zahájeny v EU Pohled.

Moderátor reaguje na tyto události čtením a aktualizací Modelka změnit Pohled a proto i Přednášející odpovědnost je zavázat Modelka a Pohled.

Po pohledu na MVC a MVP Pokud jde o vzorce, společnost má obě samostatné povinnosti pro každou složku a podporují oddělení mezi Pohled (UI) a Modelka (data). Významné rozdíly mezi těmito vzory jsou patrnější v tom, jak jsou vzory implementovány.

MVP může být složitý vzor implementace pro pokročilá řešení, ale určitě má velké výhody, pokud je implementován jako dobře navržené řešení, ačkoli nemusí být nutně vhodnou volbou pro jednoduchá řešení.

Vzor MVVM

Model-View-ViewModel (MVVM)

MVVM vzor byl speciálně navržen pro platformy Windows Presentation Foundation (WPF) a Microsoft Silverlight a lze jej použít na všech XAML [i] platformy.

WPF je systém Microsoft, který poskytuje uživatelská rozhraní v programech založených na systému Windows a byl poprvé vydán v rozhraní .NET Framework 3.0.

MVVM byl vylepšen MVC a v tomto vzoru Pohled je aktivní s chováním, událostmi a vázáním dat a Pohled synchronizuje s ViewModel (což umožňuje oddělení prezentace a odhaluje metody a příkazy pro správu a manipulaci s Modelka.

MVVM obsahuje tři základní komponenty:

  • Modelka (představuje data s ověřením a obchodní logikou)
  • Pohled (Pohled je zodpovědný za definování struktury, rozvržení a vzhledu toho, co uživatel vidí na obrazovce. V ideálním případě je pohled definován čistě pomocí XAML, s omezeným kódovým pozadím, který neobsahuje obchodní logiku. vazba mezi Pohled a ViewModel pro zobrazení tabulek synchronizujících model a ViewModel s pohledem)
  • ViewModel (odděluje pohled od modelu a vystavuje metody a příkazy pro manipulaci s daty (model).

Pohled přijímá data z internetu ViewModel (prostřednictvím vázání dat a metod) a za běhu Pohled se změní, když odpoví na události v ViewModel.

ViewModel zprostředkovává mezi Pohled a Modelka a zpracovává Pohled logika. Interaguje s Modelka - převzetí dat z internetu Modelka a představit ji Pohled zobrazit.

Všechny tyto komponenty jsou navzájem oddělené, což umožňuje větší flexibilitu při práci na nich nezávisle, izolaci testování jednotek a jejich výměnu, aniž by to ovlivnilo jakoukoli jinou komponentu.

Tato struktura umožňuje Modelka a další komponenty se vyvíjejí nezávisle, což vývojářům umožňuje souběžně pracovat na různých aspektech řešení. Například, kde návrháři pracují na internetu Pohled, jednoduše generují vzorky dat bez nutnosti přístupu k ostatním komponentám. To usnadňuje snadnou redesign uživatelského rozhraní jako Pohled je implementován v XAML.

Jak bylo uvedeno výše s MVP, jednoduchá řešení by nevyžadovala architekturu a návrhové vzory, například „Hello World!“ je příliš základní na to, aby sledoval jakýkoli vzorec; s tím, jak se zavádí více funkcí, funkcí a součástí, se však složitost aplikace zvyšuje a zvyšuje se také množství kódu, který je třeba spravovat.

Celkem

Od začátku vývoje uživatelského rozhraní jsou stále více populární designové vzory, které usnadňují vývojový proces, škálovatelnost aplikací a usnadňuje testování.

Ilustrovaný rozdíl mezi vzory MVP a MVVM:

  • V obou MVP a MVVM, Pohled je vstupní bod aplikace
  • v MVP, existuje mezi sebou mapování Pohled a Moderátor, kde v MVVM, vztah je jeden-k-mnoho mezi Pohled a ViewModel.
  • MVP se používá především pro aplikace Windows Forms a Windows Phone a MVVM je určen pro Silverlight, WPF, Knockout / AngularJS atd.