Poznawanie wzorców projektowych MVC, MVP i MVVM

Interfejs użytkownika często zawiera dużo zagraconego kodu, głównie ze względu na skomplikowaną logikę, z którą musi sobie poradzić. Wzorce prezentacji są projektowane głównie z myślą o jednym celu, zmniejszając złożony kod w warstwie prezentacji i czyniąc kod w interfejsie użytkownika przejrzystym i łatwym w zarządzaniu. W tym poście przedstawię dyskusję na temat wzorców projektowych MVC, MVP i MVVM i wskażę, kiedy jeden z nich powinien być projektem z wyboru.

Kontroler widoku modelu

Struktura Model View Controller (powszechnie znana jako MVC) pomaga tworzyć aplikacje, które są łatwiejsze do testowania i utrzymania. Składa się z trzech głównych elementów, a mianowicie:

  1. Model - jest to warstwa reprezentująca dane aplikacji
  2. Widok - reprezentuje prezentację lub warstwę interfejsu użytkownika
  3. Kontroler - ta warstwa zazwyczaj zawiera logikę biznesową aplikacji

Głównym celem wzorca projektowego MVC jest oddzielenie problemów w celu ułatwienia testowalności. Wzorzec projektowy kontrolera widoku modelu umożliwia wyodrębnienie problemów i ułatwia testowanie i konserwację kodu aplikacji. W typowym projekcie MVC żądanie najpierw dociera do kontrolera, który wiąże model z odpowiednim widokiem. We wzorcu projektowym MVC widok i kontroler korzystają z projektu strategii, a widok i model są zsynchronizowane przy użyciu projektu obserwatora. Dlatego możemy powiedzieć, że MVC jest wzorcem złożonym. Kontroler i widok są luźno powiązane, a jeden kontroler może być używany w wielu widokach. Widok subskrybuje zmiany w modelu.

Prezenter widoku modelu

Wzorzec projektowy MVP (Model View Presenter) również składa się z trzech komponentów - modelu, widoku i prezentera. We wzorcu projektowym MVP kontroler (w MVC) jest zastępowany przez prezentera. W przeciwieństwie do wzorca projektowego MVC, Prezenter odwołuje się z powrotem do widoku, dzięki któremu mockowanie widoku jest łatwiejsze, a testowanie jednostkowe aplikacji wykorzystujących wzorzec projektowy MVP zamiast wzorca projektowego MVC jest znacznie łatwiejsze. We wzorcu projektowym MVP prezenter manipuluje modelem, a także aktualizuje widok. Istnieją dwie odmiany tego projektu. Należą do nich następujące.

  1. Widok pasywny - w tej strategii widok nie rozpoznaje modelu, a prezenter aktualizuje widok, aby odzwierciedlić zmiany w modelu.
  2. Kontroler nadzorujący - w tej strategii widok współdziała z modelem bezpośrednio w celu powiązania danych z kontrolkami danych bez interwencji prezentera. Prezenter jest odpowiedzialny za aktualizację modelu. Manipuluje widokiem tylko w razie potrzeby - jeśli potrzebujesz do wykonania złożonej logiki interfejsu użytkownika.

Podczas gdy oba te warianty promują testowalność logiki prezentacji, wariant pasywnego widoku jest preferowany w stosunku do drugiego wariantu (kontroler nadzorujący), jeśli chodzi o testowalność, przede wszystkim dlatego, że cała logika widoku jest zaktualizowana wewnątrz prezentera.

Wzorzec projektowy MVP jest preferowany w stosunku do MVC, gdy aplikacja musi zapewnić obsługę wielu technologii interfejsu użytkownika. Jest to również preferowane, jeśli masz złożony interfejs użytkownika z dużą ilością interakcji z użytkownikiem. Jeśli chcesz mieć zautomatyzowane testy jednostkowe w interfejsie użytkownika aplikacji, wzorzec projektowy MVP jest dobrze dopasowany i preferowany w stosunku do tradycyjnego projektu MVC.

Model - Widok - ViewModel (MVVM)

Model - Widok - ViewModel (MVVM) jest odmianą wzorca projektowego Martina Fowlera Presentation Model. MVVM to udoskonalenie popularnego projektu MVC, a ViewModel w MVVM służy do ułatwienia separacji prezentacji. W MVVM logika jest przechowywana w prezenterze, a widok jest całkowicie odizolowany od modelu. Podczas gdy prezenter nie zna widoku, widok jest świadomy prezentera - prezenter w MVVM jest używany do reprezentowania abstrakcyjnego widoku interfejsu użytkownika. Widok pasywny oznacza, że ​​widok nie ma żadnej wiedzy o modelu. We wzorcu projektowym MVVM widok jest aktywny i zawiera informacje o zachowaniach, zdarzeniach i powiązaniach danych. Należy zauważyć, że widok w MVVM nie jest odpowiedzialny za zarządzanie informacjami o stanie - widok jest raczej zsynchronizowany z modelem widoku.Viewmodel w MVVM jest odpowiedzialny za separację prezentacji i udostępnia metody i polecenia do zarządzania stanem widoku i manipulowania modelem.

Jak komunikują się widok i model widoku w MVVM? Cóż, widok i model widoku w MVVM komunikują się za pomocą metod, właściwości i zdarzeń. Dwukierunkowe wiązanie danych lub dwukierunkowe wiązanie danych między widokiem a ViewModel zapewnia, że ​​modele i właściwości w ViewModel są zsynchronizowane z widokiem. Wzorzec projektowy MVVM dobrze sprawdza się w aplikacjach, które wymagają obsługi dwukierunkowego wiązania danych.