MVVMCROSS usnadňuje oddělení obav v aplikacích napříč platformami implementací vzorce modelu-view-viewModel (MVVM), který ze své podstaty podporuje jasné rozdělení odpovědností mezi různými složkami aplikace. Zde je způsob, jak toho MVVMCross dosáhnout:
Implementace vzorů MVVM
MVVMCross je postaven na architektuře MVVM, která se skládá ze tří hlavních složek:
- Model: Představuje data a obchodní logika aplikace. Zapojuje datové struktury a operace, které jsou nezávislé na uživatelském rozhraní.
- Zobrazit: zpracovává uživatelské rozhraní a interakce uživatelů. Je zodpovědný za zobrazení dat a přijímání vstupů od uživatele.
- ViewModel: Působí jako prostředník mezi modelem a pohledem. Vystavuje data a příkazy, na které se pohled může vázat, a účinně oddělit pohled z modelu.
Udržováním tohoto oddělení MVVMCross zajišťuje, že každá složka se zaměřuje na svou specifickou roli bez překrývajících se povinností. Například pohled by neměl obsahovat obchodní logiku a ViewModel by neměl přímo manipulovat s prvky uživatelského rozhraní.
Portable Class Library (PCL) pro sdílenou logiku
MVVMCross používá přenosnou knihovnu třídy (PCL) k umístění viewModels, modelů a rozhraní pro služby specifické pro platformu. Tento PCL slouží jako hlavní projekt, který obsahuje sdílenou obchodní logiku a zpracování databází. Oddělením obchodní logiky do PCL umožňuje MVVMCross vývojářům sdílet významnou část kódu na různých platformách, jako jsou iOS, Android a Windows. Tento přístup nejen usnadňuje opětovné použití kódu, ale také zajišťuje, že obchodní logika zůstává na platformách konzistentní.
Vazba a komunikace dat
MVVMCross používá vazbu dat pro zobrazení propojení s jejich odpovídajícími zobrazeními. Tento mechanismus umožňuje, aby se pohled automaticky aktualizoval při změně ViewModel a naopak. Vazba dat je zásadní pro udržení oddělení obav, protože umožňuje názor reagovat na změny v ViewModel, aniž by bylo nutné znát implementační údaje o obchodní logice.
MVVMCross navíc podporuje různé komunikační techniky, jako jsou příkazy a události, které dále zvyšují oddělení obav tím, že umožňují pohledu vyvolávat akce na ViewModel, aniž by přímo přistupovaly k jeho vnitřnímu stavu.
Injekce závislosti a architektura pluginů
MVVMCross zahrnuje injekci závislosti (DI) a architekturu pluginu pro správu závislostí a rozšíření schopností rámce. Injekce závislosti pomáhá zajistit, aby komponenty byly volně spojeny, což usnadňuje testování a údržbu aplikace. Architektura pluginu umožňuje vývojářům přidávat nové funkce bez změny základního rámce, čímž si udržuje čisté oddělení obav.
Správa životního cyklu
MVVMCross poskytuje vlastnosti správy životního cyklu pro viewModels, které jsou vázány na životní cyklus názorů. To znamená, že ViewModels lze upozornit, když je pohled vytvořen, objeví se, zmizí nebo je zničen. Takové řízení životního cyklu pomáhá udržovat čisté oddělení obav tím, že zajišťuje, že zdroje jsou řádně vyčištěny a že stav ViewModelu je správně spravován.
Stručně řečeno, MVVMCross usnadňuje oddělení obav v aplikacích napříč platformami prosazováním vzoru MVVM pomocí PCL pro sdílenou logiku, implementací vazby dat a začleněním vstřikování závislosti a řízení životního cyklu. Tyto funkce kolektivně přispívají k robustní, udržovatelné a škálovatelné aplikační architektuře.
Citace:[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://visualstudiomagazine.com/articles/2018/05/08/Build-a-xamarin.forms-application.aspx
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[5] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[6] https://www.mvvmcross.com/documentation/getting-started/getting-started
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://stackoverflow.com/questions/32220007/what-does-mvvmcross-do-that-xamarin-doesnt-již
[9] https://github.com/mvvmcross/mvvmcross