Konstruktorių injekcija MVVMCross siūlo keletą pagrindinių privalumų, kurie pagerina įvairių platformų programų kūrimą ir priežiūrą. Čia pateikiami išsamūs konstruktorių injekcijos naudojimo pranašumai šiame kontekste:
1. Atsiejimas ir bandomumas **
Konstruktoriaus įpurškimas leidžia aiškiai atskirti susirūpinimą tarp skirtingų programos komponentų. Įšvirkškite priklausomybes per konstruktorių, galite lengvai pakeisti diegimus bandymo tikslais. Tai leidžia paprasčiau rašyti vienetų testus, teikiant paslaugas, kurios yra teikiamos MOCK, o tai yra labai svarbus norint išlaikyti tvirtas ir patikimas kodų bazes [2] [4].2. Konkrečios platformos įgyvendinimai **
„MVVMCross“ leidžia naudoti konkrečią platformai būdingą įgyvendinimą per konstruktorių injekciją. Pvz., Jei turite paslaugą, kuri sąveikauja su fotoaparatu, galite pateikti skirtingus „Android“ ir „iOS“ diegimus. Šis lankstumas yra ypač naudingas kuriant įvairius platformas, kai skirtingoms platformoms gali prireikti unikalių tam tikrų funkcijų tvarkymo [3] [6].3. Priklausomybės skiriamoji geba **
„MVVMCross“ naudoja galingą IOC konteinerį (`mvx.iocprovider`), kuris automatiškai išsprendžia priklausomybes objekto konstrukcijos metu. Tai reiškia, kad kai „ViewModel“ ar „Service“ yra akimirksniu, „MVVMCross“ automatiškai pateiks reikiamas priklausomybes, sumažins rankinio momento poreikį ir padarys kodą glaustesnį bei prižiūrimą [1] [2].4. Priklausomybės valdymo lankstumas **
Konstruktoriaus įpurškimas leidžia lanksčiai valdyti priklausomybes. Galite registruoti paslaugas kaip singletons, dinamiškus atvejus arba naudoti kitas gyvenimo ciklo valdymo strategijas. Šis lankstumas yra naudingas sprendžiant įvairių tipų priklausomybes, kurioms gali prireikti skirtingų valdymo metodų [2] [3].5. Supaprastinta kodo struktūra **
Naudodamiesi konstruktoriaus injekcijomis, galite išlaikyti savo kodą organizuotą ir sutelkti dėmesį į jo pagrindinę logiką. Injekcijos mechanizmas tvarko priklausomybių momentą ir teikimą, o tai supaprastina jūsų klasių struktūrą ir palengvina jas lengviau suprasti ir išlaikyti [4] [7].6. Patobulintas pakartotinis naudojimas **
Konstruktoriaus įpurškimas skatina pakartotinį naudojimą, leisdama lengvai pakartotinai naudoti komponentus įvairiose programos dalyse. Kadangi priklausomybės yra įšvirkštos, o ne kietai koduojamos, komponentai tampa modulinesni ir pritaikomi skirtinguose kontekstuose [5] [7].Apibendrinant galima pasakyti, kad konstruktorių injekcija MVVMCross pagerina kūrimo procesą, skatinant atsiejimą, testavimą, lankstumą ir pakartotinį naudojimą, todėl tai yra galinga priemonė tvirtoms ir prižiūrimoms įvairių platformų programoms.
Citatos:[1] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency injection
[3] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/August/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[6] https://stackoverflow.com/questions/45618740/how-to-use-ioc-ioc-socontortor-innection-mvvmcross-mvvmcross-platform-xceptions-m
[7] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-core-project/adding-an-applass
[8] https://stackoverflow.com/questions/40737720/constructor-innection-vs-field injection
[9] https://github.com/mvvmcross/mvvmcross/issues/3586