MVC, MVP, MVVM: który wybrać?

MVC, MVP, MVVM: który wybrać?

Nowoczesne aplikacje potrzebują tak różnorodnych funkcji, że proces ich tworzenia rozrósł się i stał się bardziej złożony. Aby pomóc, możesz użyć wzorca projektu architektonicznego. Wspierają budowanie aplikacji, które są łatwe w testowaniu i utrzymaniu.





Trzy najpopularniejsze wzorce projektowe to MVC, MVP i MVVM. MVC oznacza model, widok i kontroler, podczas gdy MVP oznacza model, widok i prezenter, a MVVM oznacza model, widok i model widoku.





Wzorce architektoniczne i projektowe

Wzór architektoniczny

Wzorzec architektoniczny wyjaśnia i definiuje niektóre kluczowe elementy architektury oprogramowania. Mimo że wzór architektoniczny przekazuje obraz systemu, to nie jest architektura . W rzeczywistości jest to ogólne i wielokrotnego użytku rozwiązanie powszechnie występującego problemu w architekturze oprogramowania w określonym kontekście.





Wzór projektu

Wzorzec projektowy to sformalizowana najlepsza praktyka, której można użyć do rozwiązywania typowych problemów podczas projektowania aplikacji lub systemu.

Różnica między wzorcem architektonicznym a projektowym

Zacznijmy od wspólnego terminu — wzór. W oprogramowaniu wzorzec jest powtarzalną właściwością, która pozwala rozbić ogromną i złożoną strukturę na mniejsze, prostsze komponenty. Możesz użyć tego wzorca, aby stworzyć ogólne rozwiązanie dla klasy problemów.



Na każdym poziomie tworzenia oprogramowania będziesz używać różnych narzędzi. Na mniejszych poziomach narzędzia te są wzorcami projektowymi. Wzory architektoniczne istnieją na większych poziomach i paradygmaty programowania na poziomie wdrożenia.

Dlaczego potrzebujemy architektonicznych wzorców projektowych?

Podczas tworzenia oprogramowania można używać wzorców projektowych architektonicznych do rozwiązywania typowych problemów. Dobra architektura może również pomóc w:





  • Podziel złożone zadania na prostsze.
  • Zmniejsz błędy.
  • Twórz testowalny i konserwowalny kod.

Ale bez wzorca architektonicznego możesz napotkać trudności w utrzymaniu logiki biznesowej aplikacji.

Model, widok, widok modelu, kontroler i prezenter

Zanim przyjrzysz się każdemu wzorowi, oto terminy, które je tworzą:





  • Model przechowuje dane i komunikuje się bezpośrednio z bazą danych. Model to część, która reprezentuje logikę danych i aplikacji. Definiuje reguły biznesowe, które zarządzają obsługą, modyfikacją lub przetwarzaniem danych.
  • Pogląd wyświetla dane modelu i odpowiada za reprezentację danych w interfejsie użytkownika.
  • ZobaczModel jest wyłącznym wzorcem MVVM. Jest to abstrakcja warstwy widoku i działa również jako opakowanie dla danych modelu.
  • Kontroler jest komponentem, który integruje widok i model.
  • Prezenter to komponent, który istnieje tylko w modelu MVP. Prezenter pobiera dane wejściowe z komponentu widoku i przetwarza dane za pomocą modelu.

Wzorce MVC, MVP i MVVM

Wzorzec Model-Widok-Kontroler

The Wzór architektoniczny MVC był pierwszy i jest dziś popularny w dziedzinie aplikacji internetowych. Został wprowadzony w latach 70. XX wieku. Ten wzorzec pozwala zbudować aplikację wokół separacji obaw (SoC). Ułatwia testowanie, konserwację i rozwijanie aplikacji.

We wzorcu MVC model nie rozumie widoku ani kontrolera. Obserwator modelu otrzyma alert za każdym razem, gdy nastąpi zmiana w widoku i kontrolerze. Kontroler pomaga procesowi routingu połączyć model z odpowiednim widokiem.

Niektóre z zalet wzorca MVC to:

  • Separacja obaw (bardziej skoncentrowana).
  • Ułatwia testowanie kodu i zarządzanie nim.
  • Promuje oddzielenie warstw aplikacji.
  • Lepsza organizacja kodu i możliwość ponownego wykorzystania.

Oto jak działa MVC:

  Obraz diagramu ilustrującego działanie MVC

Dzięki SoC MVC może zmniejszyć rozmiar kodu i stworzyć dobry kod, który jest czysty i łatwy w zarządzaniu.

Wzór-Widok-Prezentator Modelu

Wzorzec MVP dzieli z MVC dwa składniki: model i widok. Zastępuje kontrolera prezenterem. Prezenter — jak sama nazwa wskazuje — służy do prezentowania czegoś. Pozwala to łatwiej kpić z widoku.

W MVP prezenter ma funkcjonalność „pośrednika”, ponieważ cała logika prezentacji jest do niego wpychana. Widok i prezenter w MVP są również niezależne od siebie i współdziałają za pośrednictwem interfejsu.

Oto ilustracja działania wzorca MVP:

  Obraz diagramu ilustrującego działanie MVP

Prezenter otrzymuje dane wejściowe od użytkownika za pośrednictwem widoku. Następnie przetwarza działania użytkownika za pomocą modelu, przekazując wyniki z powrotem do widoku. Prezenter komunikuje się z widokiem poprzez interfejsy.

Model-View-ViewModel wzorzec

MVVM to nowoczesna ewolucja MVC. Głównym celem MVVM jest zapewnienie wyraźnego oddzielenia logiki domeny od warstwy prezentacji. MVVM obsługuje dwukierunkowe powiązanie danych między widokiem a modelem widoku.

Wzorzec MVVM umożliwia oddzielenie widoku i modelu kodu. Oznacza to, że gdy model się zmienia, widok nie musi i vice versa. Korzystając z modelu widoku, możesz wykonywać testy jednostkowe i testować zachowanie logiki bez angażowania widoku.

Oto ilustracja działania MVVM:

  Obraz diagramu ilustrującego działanie MVVM

Kiedy używać MVC, MVP i MVVM

Teraz, gdy znasz już każdy wzór, dowiedz się, kiedy ich użyć.

Kiedy używać MVC?

MVC to po prostu implementacja Separacji obaw. Jeśli aplikacja musi oddzielić dane (model), przetwarzanie danych (kontroler) i prezentację danych (widok), MVC będzie działać dobrze. MVC dobrze sprawdza się również w aplikacjach, w których źródło danych i/lub prezentacja danych mogą ulec zmianie w dowolnym momencie.

Kiedy używać MVP

Możesz użyć MVP, gdy aplikacja ma przepływ dwukierunkowy. Jeśli interakcje użytkownika wymagają zażądania czegoś od modelu, a wynik tego żądania natychmiast zmieni interfejs użytkownika, rozważ MVP.

Kiedy używać MVVM

Będziesz chciał użyć MVVM, gdy:

obracanie filmów w Windows Media Player
  • Musisz udostępnić projekt projektantowi, a prace projektowe i programistyczne mogą odbywać się niezależnie.
  • Potrzebujesz testów jednostkowych dla swoich rozwiązań.
  • Potrzebne są komponenty wielokrotnego użytku, zarówno w ramach projektów w organizacji, jak i między nimi.
  • Potrzebujesz większej elastyczności, aby zmieniać widoki bez konieczności refaktoryzacji innej logiki w bazie kodu.

Który wzór wybrać?

Głównym powodem używania wzorca projektowego jest zmniejszenie złożoności. Możesz to zrobić, zmniejszając ogólną złożoność lub zastępując nieznaną złożoność znaną. Jeśli wzorzec projektowy nie może zmniejszyć złożoności na jeden z tych dwóch sposobów, nie używaj żadnego z nich; nie doda to żadnej wartości.

Jeśli naprawdę jesteś pewien, że powinieneś użyć wzorca projektowego, spróbuj zrobić listę kontrolną. Oprzyj się na sytuacjach, które tu widziałeś i wybierz najlepsze dopasowanie do swojego projektu.