w , , , ,

FajneFajne Dobre!Dobre! ŚwietnieŚwietnie Że co?Że co?

Warstwy pośrednie w dostępnie do danych – MVC

Warstwy pośrednie w dostępnie do danych – MVC

W trakcie jednego z webinariów dotyczących budowy aplikacji REST API ze współpracy z bazą danych (link do nagrania ze szkolenia tutaj) zastosowałem warstwę pośrednią pomiędzy API a DAO. Jeden ze słuchaczy zapytał mnie o jej znaczenie.

Model-View-Controller

Praktyka została zaczerpnięta ze wzorca architektonicznego Model-View-Controller (MVC).
W nomenklaturze często klasa pośrednicząca (Controller) jest nazywana Managerem. Jej głównym zadaniem jest kontrolowana separacja pomiędzy modelem a widokiem.
Model odpowiada za dostęp do danych, a View stanowi warstwę prezentacji, która w moim przypadku udostępniała interfejs REST.

Model-View-Controller
Model-View-Controller

Po co Controller?

Stanowi on dobrą praktykę, aby API miało kontrolowany dostęp do warstwy dostępu do danych. Często warstwa ta jest wykorzystywana na potrzeby obliczeń, które następnie trafią do warstwy View. Przykładem może być prosta aplikacja licząca odległość między dwoma punktami na mapie. Kontroler z Modelu pobiera współrzędne miejsca A i B, oblicza odległość a następne przekazuje rezultat do View.
Często zdarza się, że Controller nie ma żadnej dodatkowej logiki i posiada te same metody, które są na poziomie Modelu. Głównie po to, aby utrzymać spójność całej aplikacji lub na potrzeby przyszłej modyfikacji.

Zalety

  • single responsibility principle – klasy posiadają tylko jedną odpowiedzialność;
  • łatwość testowania;

Wady

  • czasami stanowi przerost formy nad treścią;
  • wydłuża proces developmentu;

Wnioski

W trakcie prowadzonego szkolenia wykorzystałem model tworzenia aplikacji wg. MVC. W realizowanym przypadku Controller nie miał żadnej odpowiedzialności – przekazywał on tylko i wyłącznie dane dalej. W takim przypadku był on zbyteczny i komplikował implementacje.
Jednak podczas pisania każdej aplikacji warto myśleć o możliwościach rozbudowy aplikacji w przyszłości i stosowaniu dobrych praktyk od początku. W omawianym przypadku wypożyczalni kaset video w kolejnych etapach można uwzględnić naliczanie płatności względem czasu jej wypożyczenia. Wówczas miejscem do zawarcia logiki byłby tutaj kontroler.

 

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Flywaydb

Flyway – system kontroli wersji dla baz danych

Spring Initializr

Nowy Spring Initializr i Spring Boot 2.2.0