Co to jest kontroler widoku modelu?
Model-view-controller (MVC) to rodzaj architektury oprogramowania i wzorca projektowego, który dzieli każdy element programu na ściśle określone obszary funkcjonalności. W architekturze model-widok-kontroler model zajmuje się całą wewnętrzną logiką programu, która manipuluje, zapisuje, pobiera i w inny sposób obsługuje i oblicza dane. Aspekt widoku jest odpowiedzialny za wyświetlanie informacji z modelu dla użytkownika, a także zapewnia użytkownikowi możliwość wprowadzania danych do programu. Kontroler pobiera dane wejściowe z widoku, ocenia je lub w inny sposób przetwarza i współdziała z modelem w celu zmiany danych lub stanu programu, który ostatecznie jest pokazywany użytkownikowi przez widok. Chociaż konstrukcja model-przeglądarka-kontroler wymaga programu do enkapsulacji funkcjonalności, trzy sekcje nadal muszą ze sobą współdziałać i ogólnie są w pewnym sensie zależne od siebie, w przeciwieństwie do innych bardziej agresywnych wzorców projektowych.
Dość często wzorzec model-widok-kontroler jest widoczny w aplikacjach zarządzających graficznym interfejsem użytkownika (GUI). Wykorzystując wzorzec MVC, różne elementy wizualne GUI są obsługiwane przez widok, rejestrowanie i przetwarzanie, gdzie i co klika użytkownik jest obsługiwany przez kontroler, a rzeczywista zmiana informacji lub ładowanie jest dokonywane przez model. W zależności od dokładnego projektu aplikacji, każdy element wzoru MVC może mieć mechanizm interakcji z innymi komponentami, na przykład model może bezpośrednio instruować widok, aby odświeżył ekran lub widok mający sposób kontroler, że odświeża ekran i nie akceptuje nowych danych wejściowych. W przeciwieństwie do niektórych wzorców projektowych, które przyjmują ścisłe podejście do czarnej skrzynki, programy kontrolujące widok modelu są nieco bardziej elastyczne, chociaż niektóre implementacje mogą utrudniać modyfikację lub debugowanie programu MVC.
W niektórych przypadkach wzorzec model-widok-kontroler nie musi zawierać tylko jednego z każdego komponentu. Jednym z przykładów jest aplikacja, która ma wiele widoków, takich jak wiele monitorów lub wyświetlacz, który można zobaczyć na kilku urządzeniach klienckich. W aplikacji, która pozwala wielu użytkownikom na dostęp do bazy danych, wszyscy mogą odpowiadać jednemu modelowi, można korzystać z wielu widoków i kontrolerów. Bardziej powszechne jest jednak projektowanie systemów, które utrzymują stosunek jeden do jednego komponentów model-widok-kontroler.
Mimo że komponenty kontrolera widoku modelu zależą od siebie, o wiele łatwiej jest zmodyfikować niektóre części systemu, które używają wzorca MVC, niż gdyby w ogóle nie użyto żadnego wzorca, szczególnie w przypadku zorientowanego na obiekt Aplikacje. Jeśli aplikacja używa wywołań zwrotnych lub detektorów i obserwatorów do implementacji interakcji między komponentami, każdy komponent można zmienić bez wpływu na pozostałe dwa. Oznacza to, że nowy GUI może zostać zaimplementowany bez wpływu na model lub kontroler. Należy jednak zauważyć, że fundamentalne zmiany w systemie kontrolera widoku modelu mogą wymagać niewielkiej ilości ponownego kodowania każdego elementu.