Na początek trochę historii
Model-Widok-Kontroler został zaprojektowany w 1979 roku przez norweskiego programistę Trygve Reenskaug pracującego wtedy nad językiem Smalltalk w laboratoriach Xerox[5] i początkowo nosił nazwę Model-View-Editor. Oryginalna implementacja została szczegółowo opisana we wpływowej pracy „Applications Programming in Smalltalk-80: How to use Model–View–Controller”.
Model-View-Controller – wzorzec architektoniczny służący do organizowania struktury aplikacji posiadających graficzne interfejsy użytkownika. Wiele prac traktuje go jako pojedynczy wzorzec, lecz może on być także traktowany jako złożony wzorzec wykorzystujący idee wzorców prostych, takich jak Obserwator, Strategia czy Kompozyt. Oba te podejścia nie wykluczają się. MVC nie był traktowany jako samodzielny wzorzec również w pracy „Design Patterns: Elements of Reusable Object-Oriented Software” autorstwa „Bandy Czworga”.
Założenia wzorca
Głównym założeniem wzorca MVC jest oddzielenie od siebie trzech warstw przedstawionych na diagramie poniżej.
- Model – jest to warstwa, która przechowuje wszystkie dane oraz logię biznesową aplikacji. Często nieświadomy o istnieniu widoku i kontrolera. Znajdują się tutaj obiekty odpowiedzialne za implementację funkcjonalności aplikacji, a także operacje łączenia się i pobierania informacji z bazy danych.
- Widok – warstwa ta jest tym czym widzi użytkownik aplikacji. Prezentuje dane, które są przechowywane w modelu, umożliwia interakcję i wysyłanie komend.
- Kontroler – warstwa które obsługuje (niejako przekierowuje) żądania wysłane za pomocą widoku, pobiera z niego dane wejściowe, odpowiednio je interpretuje i przekazuje do modelu.
Wady i zalety
Dzięki podziałowi aplikacji na warstwy przedstawione powyżej uzyskujemy uporządkowaną architekturę systemu, w której każda część jest od siebie niezależna. Zmiany w jednym miejscu, nie powodują konieczności dokonywania modyfikacji w jego pozostałych częściach. Daje to możliwość niezależnej pracy na front-endem i back-endem. Do konsekwencji użycia wzorca będącego bohaterem tego artykułu możemy zaliczyć:
Zalety
- Niezależność – zmiany w jednej części systemu nie wpływają na inne
- Szybszy proces produkcji aplikacji, ułatwia pracę zespołową
- Łatwa rozbudowa i wprowadzanie nowych funkcji
- Możliwość dostarczenia wielu widoków jednocześnie
Wady
- Złożoność – architektura MVC wprowadza wiele poziomów abstrakcji i sposobów interakcji, które mogą być trudne do zrozumienia
- Małą elastyczność modelu, która w przypadku niektórych zmiana wymaga modyfikacji wielu widoków
- Konieczność trzymania się rygorystycznych zasad przy tworzeniu metod (kontroler nie ma bezpośredniego dostępu do modelu, a wywołuje na nim tylko odpowiednie funkcje)
Podsumowanie
Mimo kilku wad wymienionych w poprzednim akapicie, zalety wzorca MVC znacząca przewyższają jego wady. Jest on jednym z najszerzej rozpowszechnionych schematów tworzenia aplikacji. Korzysta z niego wiele nowoczesnych frameworków i mimo, że posiada stosunkowo (do innych wzorców) wysoki próg wejścia, to jest on nieodłącznym elementem życia każdego programisty.
