MVVMCross förbättrar avsevärt kodåteranvändning i code-plattformsappar genom att utnyttja Model-View-ViewModel (MVVM) arkitektoniska mönster. Så här uppnår det detta:
1. Separation av oro: MVVMCross främjar en tydlig separering av oro genom att dela upp tillämpningen i två huvuddelar: kärnan och användargränssnittet. Kärnprojektet, vanligtvis ett bärbart klassbibliotek (PCL) eller .NET Standard Library, innehåller alla Viewmodels, modeller och affärslogik. Detta möjliggör maximal återanvändning av kod på olika plattformar, eftersom affärslogiken frikopplas från plattformsspecifik kod [1] [2] [7].
2. ViewModels in Core Project: Genom att placera ViewModels i kärnprojektet gör MVVMCross att utvecklare kan dela dessa komponenter på flera plattformar. Detta innebär att logiken för hantering av användarinteraktioner, datamanipulation och navigering kan återanvändas utan modifiering på olika plattformar som iOS, Android och Windows [1] [3] [9].
3. Databindning: MVVMCross stöder databindning, som automatiskt uppdaterar UI när ändringar inträffar i ViewModel. Denna funktion är avgörande för att upprätthålla konsistens mellan plattformar och minskar behovet av manuella UI-uppdateringar, vilket ytterligare förbättrar kodåteranvändningen [4] [5].
4. Beroendeinjektion och plugins: MVVMCross inkluderar en plug-in arkitektur och beroendeinjektionsinjektion (DI). Dessa funktioner gör det möjligt för utvecklare att implementera plattformsspecifika funktioner på ett sätt som de enkelt kan nås och återanvändas från kärnprojektet. Detta innebär att även om UI-lagret måste vara plattformsspecifikt, kan många underliggande funktionaliteter fortfarande delas [3] [9].
5. Navigations- och visningspresentatörer: MVVMCross tillhandahåller ett kraftfullt ViewModel-första navigationssystem, som möjliggör orkestrering av applikationsnavigering från kärnprojektet. Detta innebär att flödet av användarinteraktioner och skärmövergångar kan hanteras centralt, vilket minskar behovet av plattformsspecifik navigationskod [7].
6. Effektiv projektstruktur: MVVMCross uppmuntrar en strukturerad strategi för projektorganisation, med en tydlig åtskillnad mellan plattforms-agnostisk kod i kärnan och plattformsspecifik kod i UI-projekten. Denna struktur underlättar enklare underhåll och förlängning av applikationer för plattformar [2] [9].
Sammantaget förbättrar MVVMCross kodåteranvändning genom att centralisera affärslogik, utnyttja databindning och tillhandahålla verktyg för att hantera plattformsspecifika funktioner på ett enhetligt sätt. Detta tillvägagångssätt minskar avsevärt mängden duplicerad kod och påskyndar apputvecklingen för plattform.
Citeringar:]
[2] https://www.toptal.com/xamarin/cross-platform-apps-with-xamarin
[3] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[4] https://tiefenauer.github.io/blog/mobile-app-development-with-xamarin-and-mvvmcross-part-1-introduktion/
[5] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[6] https://diglib.tugraz.at/download.php?id=576a78335451D&location=browse
[7] https://www.mvvmcross.com/documentation/geting-started/mvvmcross-overview
[8] https://www.reddit.com/r/swift/comments/yrqlhu/is_crossplatform_the_future_of_mobile_development/
[9] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-ramework/
[10] https://stackoverflow.com/questions/22409697/maximizing-ui-code-reuse-with-xamarin-mvvmcross