Wzorzec architektoniczny MVI

Autor: Damian Chodorek • Opublikowany: 12 sierpnia 2017 • Kategoria: android, kursy

Dzisiejsza lekcja mocno powiązana jest z poprzednią, w której opisałem Reduxa. Wynika to z faktu, iż wzorzec MVI jest bardzo podobny do Reduxa i w tym artykule zakładam, iż przeczytałeś poprzednią część.

MVI to wzorzec, który podobnie jak Redux, kieruje się zasadą jednokierunkowego przepływu danych oraz znacznie ułatwia zarządzanie stanem aplikacji, w środowisku asynchronicznym. Przypomnijmy sobie schemat Reduxa z prezenterami z poprzedniego artykułu.

Rozumiejąc go, w łatwy sposób możemy przejść z Reduxa do MVI. Pierwszą różnicą pomiędzy tymi dwoma wzorcami jest brak Store, czyli globalnie dostępnego stanu aplikacji.

Oczywiście MVI posiada własną nomenklaturę. Pomimo że działa na podobnej zasadzie co Redux, to inaczej nazywają się w nim poszczególne komponenty. Oznaczyłem na poniższym schemacie, które elementy zmieniły nazwę.

W taki sposób przeszliśmy z Reduxa do MVI.

  • Model – warstwa danych. Model odwzorowuje aktualny stan widoku. Reducer tym razem dostaje w parametrach część nowego stanu oraz poprzedni stan. Na podstawie tych informacji, Reducer wyprodukuje nowy stan, który trafi do widoku.
  • View – to warstwa widoku, która zawsze powinna odzwierciedlać ostatnio dostarczony stan.
  • Intent – to reprezentacja intencji użytkownika. Możemy powiedzieć, że jest to event wychodzący z widoku, na podstawie którego powstanie nowy stan.

W popularnej bibliotece Mosby dodano w ostatnim czasie moduł MVI. Jego szczegóły opis znajdziesz w cyklu artykułów twórcy wspomnianej biblioteki.

Resumując

MVI to podobny wzorzec do Reduxa. Głównie różni się nomenklaturą oraz tym, że nie ma w nim globalnego stanu aplikacji/komponentu. Istnieje jedynie poprzedni i następny stan. Popularną biblioteką MVI jest Mosby.