Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaké změny byly zavedeny v mvvmcross v3 ohledně konstrukce ViewModel


Jaké změny byly zavedeny v mvvmcross v3 ohledně konstrukce ViewModel


V MVVMCross V3 bylo zavedeno několik významných změn ohledně konstrukce viewmodel, jejichž cílem bylo zvýšit testovatelnost a použitelnost pro vývojáře. Zde jsou klíčové změny:

1. Injekce závislosti na základě konstruktéru: Jednou z hlavních změn bylo zavedení injekce závislosti na základě konstruktéru. To vývojářům umožnilo injekční závislosti přímo do konstruktoru ViewModelu, což usnadňuje správu závislostí a zlepšení testovatelnosti. Předtím byly závislosti často řízeny jinými prostředky, což by mohlo být méně jednoduché.

2. Navigace pomocí typických navigačních tříd: MVVMCross V3 představil nový navigační systém, který používal typizované navigační třídy. To znamenalo, že namísto navigace přímo k názorům mohli vývojáři procházet mezi viewModely pomocí silně typických tříd. Tento přístup zjednodušil navigaci mezi platformami tím, že abstrakcí detaily specifické pro platformu.

3. uložení a opětovné načtení stavu ViewModel pro náhrobku: Další významnou funkcí zavedenou ve V3 byla schopnost ukládat a znovu načíst stav ViewModel. To bylo zvláště užitečné pro manipulaci s scénáři „TombStoning“, kde může být aplikaci ukončena operačním systémem kvůli omezením paměti a poté se obnoví, když se k němu uživatel vrátí. Uložením stavu ViewModel by aplikace mohly udržovat svůj současný stav i po ukončení a restartování.

4. Navigační parametry předané na metodu `init ()`: Ve starších verzích mvvmcross byly navigační parametry předány přímo do konstruktoru ViewModelu. Avšak počínaje v3 byly tyto parametry místo toho předány metodě `init ()`. Tato změna umožnila konstruktérovi použít pouze pro injekci závislosti, díky čemuž je čistič kódu a udržovatelný. Metoda `init ()` se stala místem, kde byly zpracovány navigační parametry, což umožnilo flexibilnější logiku inicializace.

Celkově tyto změny v MVVMCross V3 poskytly strukturovanější a udržovatelnější způsob konstrukce a správy prohlížečů, což zvyšuje celkový vývojový zážitek pro aplikace napříč platformami.

Citace:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareEngineering.stackexchange.com/questions/389086/do-weed-models-if-are-using-viewModels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewModel-always-construct-ne-nisenction
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[9] https://www.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md