Az MVVMCross megkönnyíti az aggodalmak elválasztását a platformok közötti alkalmazásokban a Model-View-ViewModel (MVVM) mintázat megvalósításával, amely eredendően elősegíti a felelősségvállalás egyértelmű megosztását az alkalmazás különböző összetevői között. Így éri el ezt az MVVMCross ezt:
MVVM minta megvalósítása
Az MVVMCross az MVVM architektúra körül épül, amely három fő alkatrészből áll:
- Modell: Az alkalmazás adatait és üzleti logikáját képviseli. Befecskendezi azokat az adatszerkezeteket és műveleteket, amelyek függetlenek a felhasználói felülettől.
- Megtekintés: Kezeli a felhasználói felületet és a felhasználói interakciókat. Feladat az adatok megjelenítéséért és a felhasználótól való fogadáshoz.
- ViewModel: Közvetítőként működik a modell és a nézet között. Az adatokat és a parancsokat feltárja, amelyekhez a nézet kötődik, hatékonyan elválasztva a nézetet a modellből.
Ennek az elválasztásnak a fenntartásával az MVVMCross biztosítja, hogy az egyes komponensek konkrét szerepére összpontosítsanak, átfedő felelősség nélkül. Például, a nézetnek nem szabad üzleti logikát tartalmaznia, és a ViewModelnek nem szabad közvetlenül manipulálni a felhasználói felület elemeit.
Hordozható osztálykönyvtár (PCL) a megosztott logikához
Az MVVMCross hordozható osztálykönyvtárat (PCL) használ a ViewModels, a modellek és az interfészek elhelyezésére a platformspecifikus szolgáltatásokhoz. Ez a PCL alapvető projektként szolgál, amely tartalmazza a megosztott üzleti logikát és az adatbáziskezelést. Az üzleti logika PCL -re történő elválasztásával az MVVMCross lehetővé teszi a fejlesztők számára, hogy a kód jelentős részét megosszák a különböző platformokon, például iOS, Android és Windows. Ez a megközelítés nemcsak megkönnyíti a kód újrafelhasználását, hanem biztosítja azt is, hogy az üzleti logika a platformokon keresztül konzisztens maradjon.
Adatkötés és kommunikáció
Az MVVMCross adatkötést alkalmaz a nézetek linkre a megfelelő nézetmodellekkel. Ez a mechanizmus lehetővé teszi, hogy a nézet automatikusan frissítse, amikor a ViewModel megváltozik, és fordítva. Az adatkötés elengedhetetlen az aggodalmak elválasztásának fenntartásához, mivel lehetővé teszi a nézet reagálását a ViewModel változásaira anélkül, hogy meg kellene ismernie az üzleti logika megvalósítási részleteit.
Ezenkívül az MVVMCross támogatja a különféle kommunikációs technikákat, például a parancsokat és az eseményeket, amelyek tovább javítják az aggodalmak elválasztását azáltal, hogy lehetővé teszik a nézetnek, hogy a ViewModel -en intézkedéseket hívjon fel anélkül, hogy közvetlenül hozzáférne a belső állapotához.
Függőség injekció és plugin architektúra
Az MVVMCross magában foglalja a függőségi injekciót (DI) és a plugin architektúrát a függőségek kezelésére és a keret képességeinek kibővítésére. A függőségi injekció segít abban, hogy az alkatrészek lazán kapcsolódjanak, megkönnyítve az alkalmazás tesztelését és fenntartását. A plugin architektúra lehetővé teszi a fejlesztők számára, hogy új funkciókat adjanak hozzá anélkül, hogy megváltoztatnák az alapkeretet, ezáltal fenntartva az aggodalmak tiszta elválasztását.
Életcikluskezelés
Az MVVMCross életciklus -kezelési funkciókat biztosít a ViewModels számára, amelyek a nézetek életciklusához kapcsolódnak. Ez azt jelenti, hogy a ViewModels értesíthető a nézet létrehozásakor, megjelenik, eltűnik vagy megsemmisül. Az ilyen életciklus -kezelés elősegíti az aggodalmak tiszta szétválasztását azáltal, hogy biztosítja az erőforrások megfelelő tisztítását, és hogy a ViewModel állapotát helyesen kezelik.
Összefoglalva: az MVVMCross megkönnyíti az aggodalmak elválasztását a platformok közötti alkalmazásokban az MVVM mintázat érvényesítésével, PCL használatával a megosztott logikához, az adatkötés megvalósításához, valamint a függőségi injekció és az életciklus-kezelés beépítéséhez. Ezek a szolgáltatások együttesen hozzájárulnak a robusztus, karbantartható és skálázható alkalmazás architektúrához.
Idézetek:[1] https://www.linkedin.com/advice/0/what-best-way-sure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-pplications-Uning-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-already
[9] https://github.com/mvvmcross/mvvmcross