Kontroler otrzymuje i interpretuje żądanie i przekazuje je do odpowiedniego modelu albo widoku. Kontroler jest odpowiedzialny zazwyczaj za wzywanie(włączanie) metod z modelu, w celu zmienienia jego stanu. W aktywnym modelu, zmiany te odbijaną się w widoku przez zmianę mechanizmu obsługi. W modelu biernym (pasywnym) kontroler jest odpowiedzialny za obwieszczenie widokowi kiedy ma zostać zaktualizowany, czyli pobrać dane z modelu.
W MVC kontroler nie jest mediatorem pomiędzy widokiem i modelem. Innymi słowy kontroler nie znajduje się pomiędzy widokiem i modelem. Zarówno kontroler jak i widok maja jednakowy dostęp do modelu. Kontroler nie kopiuje danych z modelu do widoku, pomimo że mógłby pobierać dane od modelu i oznajmiać widokowi iż zaszły
zmiany w modelu. Zobacz Presentation Abstraction Control tam warstwa kontrolera spełnia role mediatora pomiędzy prezentacja, a abstrakcja.
Słowo kontroler jest przeciążane(**ale to zabrzmiało obiektowo :-) **) przez różne rozumienie go w innych wzorcach. Zobacz what is a Controller Anyway (**czym jest więc kontroler**) przedstawionych jest tam parę wzorców z kontrolerem: Front Controller pełni rolę jedynego miejsca analizy danych napływających z HTTP. Page Controller kontroluje przepływ logiki dla danej pojedynczej strony. Application Controller kontroluje całą jedną aplikacje.
Ponieważ popularny MCV framework Struts implementuje kombinacje Front Controller i Application Controller, nie którzy ludzie przypuszczają, że to jest to pod czym rozumie się pojęcie kontrolera we wzorcu MVC dla aplikacjach internetowych. Z tego samego powodu wiele opisów wzorca Front Controller dla sieci WEB nie nakreśla wyraźnie różnic pomiędzy Front Controller i Application Controller.
Tekst przełożony z angielskiego, oryginał znajduje się na:
http://www.phpwact.org/pattern/model_view_controller
Leave a reply