Articles

MVP architectural pattern

w tym artykule dowiemy się czegoś o wzorze MVP, jest on dziedziczony z wzorca MVC. Ale na pewno ma pewne zmiany w porównaniu do wzorca MVC. Zrozumiemy więc, jak go używać, jak odróżnić wzór MVC od wzorca MVP.

zaczynajmy.

  • problem z analizą
  • definicja wzorca MVP
  • kiedy używać
  • korzyści & wada
  • zakończenie

problem z analizą

uwaga, która narodziła się z wzorca MVP, jest taka sama podobnie jak w przypadku wzorca MVC. Ale MVP jest używany, aby zapobiec pewnym wadom wzorca MVC, takich jak:

  • w wzorcu MVC widok I Model mogą współdziałać ze sobą. Tak więc zwykle sprawdzamy dane z modelu lub używamy logiki danych w widoku. Utrudnia to zautomatyzowane Testowanie jednostek.
  • jest to istotne dla bezpieczeństwa.

definicja wzorca MVVM

według wikipedia.com, mamy definicję MVP pattern:

MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.

i MVP pattern powstał na początku lat 90.W Taligent, joint venture Apple, IBM i Hewlett-Packard.

Poniżej znajduje się treść każdej części wzorca MVP.

  • Model posiada podmioty i usługi.

    encje są używane do przechowywania danych, które są mapowane z tabelą w bazie danych z innych powodów.

    usługi, mogą być używane DAO pattern lub repozytorium pattern, są cienką warstwą między warstwą aplikacji a warstwą dostępu do danych. Zwykle zarządzają operacjami CRUD z bazą danych w lokalnym lub zdalnym.

  • Widok ma obowiązki, które wchodzą w interakcję z użytkownikami.

    nie zawiera żadnej logiki. Przekieruje dane wejściowe użytkownika i polecenia (zdarzenia) do prezentera.

    Widok zwykle ma odniesienie do prezentera.

  • prezenter jest częścią pośrednią między widokiem a modelem. Będzie on odgrywał taką samą rolę jak kontroler WE wzorze MVC.

    Cała logika biznesowa, logika danych, walidacja danych wejściowych, odbieranie zdarzeń z widoków, konwertowanie danych z widoku na Model lub z modelu na widok jest zaimplementowana w prezenterze.

    w porównaniu do widoku i kontrolera we wzorze MVC, widok i prezenter we wzorze MVP są całkowicie oddzielone od siebie i komunikują się za pomocą interfejsu. (Prezenter wchodzi w interakcję z widokami poprzez interfejs widoku, oznacza to, że może wykonywać wszystkie zadania prezentacji i nawigacji bez zależności od używanej technologii UI)

    i mamy schemat sekwencji wzorca MVP:

kiedy użyć

  • nasz ekran ma bi-directional-flow, oznacza to, że interakcje użytkownika muszą zażądać czegoś z naszego modelu, a wynik tego żądania wpłynie na widok.

  • Widok, na który wpływają aktualizacje z modelu, jest bardzo ograniczony.

  • wzorzec MVP nie jest używany w przypadku, gdy interfejs użytkownika jest aktualizowany bez interakcji użytkownika, jak aktualizowanie interfejsu użytkownika, gdy zdarzenie ma miejsce w modelu, takie podejście jest bliższe MVVM niż MVP.

korzyści& wada

  1. korzyści
    • widok nie oddziałuje bezpośrednio z Modelem. To izoluje implementację widoku lepiej niż w MVC i pozwala na łatwiejsze zautomatyzowane testowanie jednostki prezentera i modelu.

    • możliwość zmiany interfejsu użytkownika z Web na Window lub Mobile jest bardzo prosta.

    • niski koszt utrzymania

  2. wady
    • prezenter ma tendencję do rozszerzania się do ogromnej wszechwiedzącej klasy, jeśli nie jesteśmy wystarczająco ostrożni i nie łamiemy naszego kodu zgodnie z zasadą jednej odpowiedzialności.

    • zwiększona złożoność.

    • dodatkowa krzywa uczenia się.

niektóre wzorce, które są istotne dla wzorca MVP

  • Application Controller – jeśli prezenterzy wchodzą w interakcję z kontrolerem aplikacji, prezenterzy nie potrzebują przepływu strony i logiki nawigacji ekranu. Ułatwia to aktualizowanie przepływu strony.

  • Observer pattern

zamykanie

  • użytkownik końcowy współdziała tylko z widokiem.

  • jeden widok jest mapowany tylko do jednego prezentera.

  • Zobacz referencje prezentera, ale nie ma odniesienia do modelu. A prezenter jest również świadomy poglądów, które się z nim wiążą.

  • wzorzec umożliwia dwukierunkową komunikację między widokiem A prezenterem.

  • istnieją dwie inne implementacje wzorca MVP, takie jak pasywny widok i kontroler nadzorujący.

    • Widok pasywny jest w pełni kontrolowany przez prezentera. Implementując MVP Passive View, znacznie łatwiej jest obsługiwać współbieżność i wielowątkowość.

    • w nadzorowaniu prezentera Widok współdziała bezpośrednio z modelem, aby wykonać dowolne proste powiązanie danych, które można deklaratywnie zdefiniować, bez prezentera. Prezenter aktualizuje modelkę. Zmienia stan widoku tylko wtedy, gdy wymagana jest złożona logika interfejsu użytkownika, której nie można deklaratywnie określić.

    • w porównaniu do innych odmian MVP, takich jak widok pasywny, wzorzec prezentera nadzorującego sprawia, że prostszy kod ma wyższy priorytet niż pełna testowalność. Wzorzec supervising Presenter wymaga mniej kodu niż inne wzorce MVP, ponieważ wykorzystuje powiązanie danych. Kod jest łatwiejszy w utrzymaniu, ponieważ proste zmiany w interfejsie użytkownika nie wymagają zmian w kodzie prezentera, aby zaktualizować widok.

:

https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/

Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture

https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml

The other idea about Presenter in MVP pattern and Controller in MVC pattern

http://hannesdorfmann.com/mosby/mvp/

Choose MVP pattern over MVC pattern

Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?

Examples for MVP pattern

http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html

https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android

https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/

A Model View Presenter (MVP) implementation with ASP.NET

A brief introduction to a cleaner Android architecture: The MVP pattern

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff649571(v=10)