Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jakie zmiany wprowadzono w MVVMCROSS V3 w odniesieniu do budowy ViewModel


Jakie zmiany wprowadzono w MVVMCROSS V3 w odniesieniu do budowy ViewModel


W MVVMCROSS V3 wprowadzono kilka znaczących zmian w zakresie konstrukcji ViewModel, które miały na celu zwiększenie testowania i użyteczności dla programistów. Oto kluczowe zmiany:

1. Wstrzyknięcie zależności oparte na konstruktorze: Jedną z głównych zmian było wprowadzenie wstrzyknięcia zależności opartej na konstruktorze. Umożliwiło to programistom wstrzyknięcie zależności bezpośrednio do konstruktora ViewModel, ułatwiając zarządzanie zależnościami i poprawę testowalności. Wcześniej zależności były często zarządzane za pomocą innych środków, co może być mniej proste.

2. Nawigacja za pomocą klas nawigacji typu: MVVMCROSS V3 wprowadził nowy system nawigacji, w którym używał klas nawigacji. Oznaczało to, że zamiast poruszać się bezpośrednio do widoków, programiści mogliby nawigować między ViewModels przy użyciu klas silnie typu. Takie podejście uproszczało nawigację międzyplatformową poprzez wyodrębnienie szczegółów związanych z platformą.

3. Zapisywanie i przeładowanie stanu ViewModel do nagrobka: Kolejną znaczącą cechą wprowadzoną w V3 była możliwość zapisywania i ponownego ładowania stanu ViewModel. Było to szczególnie przydatne do obsługi scenariuszy „Tombstoning”, w których aplikacja może zostać zakończona przez system operacyjny z powodu ograniczeń pamięci, a następnie przywrócony, gdy użytkownik się do niego powróci. Zapisując stan ViewModel, aplikacje mogłyby utrzymać swój obecny stan, nawet po zakończeniu i ponownym uruchomieniu.

4. Parametry nawigacyjne przekazane do metody `init ()`: W starszych wersjach MVVMCROSS parametry nawigacji zostały przekazane bezpośrednio do konstruktora ViewModel. Jednak zaczynając od V3, te parametry zostały przeniesione do metody „init ()`. Ta zmiana pozwoliła na stosowanie konstruktora wyłącznie do iniekcji zależności, dzięki czemu kod jest czystszy i bardziej utrzymywany. Metoda „init () stała się miejscem, w którym przetwarzano parametry nawigacyjne, umożliwiając bardziej elastyczną logikę inicjalizacji.

Ogólnie rzecz biorąc, te zmiany w MVVMCROSS V3 dostarczyły bardziej ustrukturyzowanego i możliwego do utrzymania sposobu konstruowania i zarządzania ViewModels, zwiększając ogólne doświadczenie rozwojowe dla aplikacji międzyplatformowych.

Cytaty:
[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-andetup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-using-viewmodels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instances
[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