Wzorce złożone: MVP

Ostatnim wzorcem złożonym, w rodzinie Model-View, jest MVP, czyli Model-View-Presenter. Efektywnie wykorzystany może być choćby w znanym i lubianym(;)) WindowsForms – generalnie sprawdza się tam, gdzie w podobny sposób(jak w WinForms) jest budowany interfejs użytkownika.

Spójrzmy na warstwy w MVP. Dzięki temu łatwiej zrozumiemy różnicę między nim, a MVC, oraz MVVM do którego jest bardzo podobny:

  • Warstwa modelu: podobnie jak w pozostałych wzorcach z tej rodziny, reprezentują podstawowe obiekty z dziedziny problemu, oraz może, zawierać logikę biznesową.
  • Warstwa widoku:   nic odkrywczego – po prostu interfejs użytkownika. W przypadku MVP, nie ma pojęcia o warstwie modelu.
  • Warstwa prezentera: aktualizuje widoki, a także komunikuje się z modelem.

Wcześniej opisywałem wzorzec MVVM. Wydaje się, że MVP jest jego poprzednikiem, struktura zadań i zachowań poszczególnych elementów jest podobna. Różnica leży w tym (oczywiśćie oprócz data binding’u), że w przeciwieństwie do widoku modelu, prezenter z widokiem odzwierciedlają zazwyczaj relację jeden do jednego. Natomiast tym co różni MVP od MVC jest fakt, że model i widok są od siebie mocno odizolowane – nie istnieje między niemi żadna zależność.

mvp

Tutaj, jak i w pozostałych wzorcach różnica między nimi pokazuje się przede wszystkim w warstwie pośredniej. Nie będę więc pisał o warstwach widoku i modelu, bo te pozostają zbliżone do ich odpowiedników w MVC i MVVM. W zamian za to odsyłam do dwóch postów Martina Fowlera, który wprowadził podział MVP na dwie wersje: Supervising controller i Passive View.

W każdym razie, myślę że na podstawie wpisów dotyczących wiadomych wzorców każdy będzie teraz potrafił wskazać czym się charakteryzują, a także – przy odrobinie fantazji 😉 – zaimplementować je w swoich projektach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *