„MVVMCross“ palengvina susirūpinimą keliančiose srityse įvairių platformų programose įgyvendinant modelį-View-ViewModel (MVVM) modelį, kuris iš esmės skatina aiškų atsakomybės padalijimą tarp skirtingų programos komponentų. Štai kaip „Mvvmcross“ pasiekia:
MVVM modelio įgyvendinimas
MVVMCross yra pastatytas aplink MVVM architektūrą, kurią sudaro trys pagrindiniai komponentai:
- Modelis: atspindi programos duomenis ir verslo logiką. Jis apima duomenų struktūras ir operacijas, kurios nepriklauso nuo vartotojo sąsajos.
- Peržiūrėti: tvarko vartotojo sąsają ir vartotojo sąveiką. Jis yra atsakingas už duomenų rodymą ir įvesties gavimą iš vartotojo.
- „ViewModel“: veikia kaip tarpininkas tarp modelio ir rodinio. Tai atskleidžia duomenis ir komandas, kurias vaizdas gali surišti, efektyviai atsiejant vaizdą iš modelio.
Išlaikydamas šį atskyrimą, „MVVMCross“ užtikrina, kad kiekvienas komponentas sutelktų dėmesį į jo specifinį vaidmenį, neperžengiant atsakomybės. Pvz., Vaizde neturėtų būti verslo logikos, o „ViewModel“ neturėtų tiesiogiai manipuliuoti UI elementais.
nešiojama klasių biblioteka (PCL), skirta bendrai logikai
„MVVMCross“ naudoja nešiojamą klasių biblioteką (PCL), norėdama įrengti „ViewModels“, „Model“ ir sąsajas konkrečioms platformai skirtoms paslaugoms. Šis PCL yra pagrindinis projektas, kuriame yra bendra verslo logika ir duomenų bazių tvarkymas. Atskirdama verslo logiką į PCL, „MVVMCross“ leidžia kūrėjams pasidalyti didele kodo dalimi įvairiose platformose, tokiose kaip „iOS“, „Android“ ir „Windows“. Šis požiūris ne tik palengvina kodo pakartotinį naudojimą, bet ir užtikrina, kad verslo logika išliks vienoda visose platformose.
Duomenų įrišimas ir ryšys
„MVVMCross“ naudoja duomenų įrišimą, kad būtų galima susieti rodinius su atitinkamais vaizdo modeliais. Šis mechanizmas leidžia vaizdui automatiškai atnaujinti, kai keičiasi „ViewModel“, ir atvirkščiai. Duomenų įrišimas yra labai svarbus norint išlaikyti susirūpinimą keliančius dalykus, nes tai leidžia vaizdui reaguoti į „ViewModel“ pokyčius, nereikia žinoti verslo logikos diegimo informacijos.
Be to, „MVVMCross“ palaiko įvairius ryšių metodus, tokius kaip komandos ir įvykiai, kurie dar labiau sustiprina susirūpinimo atskyrimą, leisdamas vaizdui iškviesti veiksmus „ViewModel“, tiesiogiai neprieinant prie jos vidinės būsenos.
priklausomybės injekcija ir papildinio architektūra
„MVVMCross“ apima priklausomybės injekciją (DI) ir papildinio architektūrą, skirtą valdyti priklausomybes ir išplėsti sistemos galimybes. Priklausomybės injekcija padeda užtikrinti, kad komponentai būtų laisvai sujungti, todėl lengviau išbandyti ir išlaikyti programą. Papildinio architektūra leidžia kūrėjams pridėti naujų funkcijų nepakeisdami pagrindinės sistemos, taip išlaikant švarią susirūpinimo atskyrimą.
„LifeCycle“ valdymas
„MVVMCross“ teikia „ViewModels“ gyvenimo ciklo valdymo funkcijas, susietas su rodinių gyvavimo cikle. Tai reiškia, kad „ViewModels“ galima pranešti, kai sukuriamas vaizdas, pasirodo, dingsta ar sunaikinami. Toks gyvavimo ciklo valdymas padeda išlaikyti švarų susirūpinimo atskyrimą užtikrinant, kad ištekliai būtų tinkamai išvalyti ir kad „ViewModel“ būsena būtų valdoma teisingai.
Apibendrinant galima pasakyti, kad „MVVMCross“ palengvina susirūpinimą keliančiose srityse, vykdydamas MVVM modelį, naudojant PCL bendrai logikai, įgyvendinant duomenų įrišimą ir įtraukiant priklausomybės injekciją bei gyvavimo ciklo valdymą. Šios savybės kartu prisideda prie tvirtos, prižiūrima ir keičiamos programos architektūros.
Citatos:[1] https://www.linkedin.com/advice/0/what-best-way-ensure-separation-concerns-mvvm-design-csadc
[2] https://leaware.com/creating-cross-platform-xamarin-application-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-already
[9] https://github.com/mvvmcross/mvvmcross