Materiał ten stanowi część serii „Wprowadzenie do rozwoju przedsiębiorstwa”. Poprzednie artykuły:
- o sieci ;
- o architekturze oprogramowania ;
- o protokołach HTTP/HTTPS ;
- o podstawach Mavena ;
- o serwletach (piszemy prostą aplikację internetową) ;
- o kontenerach serwletów .
Historia MVC
Pomysły na MVC zostały sformułowane przez Trygve Reenskauga podczas pracy w Xerox PARC pod koniec lat 70-tych. W tamtych czasach praca z komputerem nie mogła obejść się bez stopnia naukowego i ciągłego studiowania obszernej dokumentacji. Problemem, który Reenskaug rozwiązał wraz z grupą bardzo silnych programistów, było uproszczenie interakcji przeciętnego użytkownika z komputerem. Należało stworzyć narzędzia, które z jednej strony byłyby niezwykle proste i zrozumiałe, a z drugiej umożliwiłyby zarządzanie komputerem i złożonymi aplikacjami. Reenskaug pracował w zespole, który pod przewodnictwem Alana Kaya opracował przenośny komputer „dla dzieci w każdym wieku” – Dynabook, a także język SmallTalk. To właśnie wtedy narodziły się koncepcje przyjaznego interfejsu. Praca Reenskauga ze swoim zespołem znacząco wpłynęła na rozwój branży IT. Przedstawmy ciekawostkę, która nie dotyczy bezpośrednio MVC, ale ilustruje wagę tych zmian. W 2007 roku, po prezentacji Apple iPhone, Alan Kay powiedział: „Kiedy pojawił się komputer Macintosh, Newsweek zapytał, co o nim myślę. Powiedziałem: to pierwszy komputer osobisty godny krytyki. Po prezentacji podszedł Steve Jobs i zapytał: czy iPhone zasługuje na krytykę? Powiedziałem: zrób pięć na osiem cali, a podbijesz świat. Trzy lata później, 27 stycznia 2010 roku, firma Apple wprowadziła na rynek iPada o przekątnej 9,7 cala. Oznacza to, że Steve Jobs niemal dosłownie zastosował się do rad Alana Kaya. Projekt, nad którym pracował Rennskaug, trwał 10 lat. A pierwsza publikacja o MVC od jego twórców ukazała się kolejne 10 lat później. Martin Fowler, autor wielu książek i artykułów na temat architektury oprogramowania, wspomina, że MVC nauczył się z działającej wersji SmallTalk. Ponieważ przez długi czas w pierwotnym źródle nie było informacji o MVC, a także z szeregu innych powodów, pojawiło się wiele różnych interpretacji tego pojęcia. W rezultacie wiele osób uważa MVC za schemat lub wzorzec projektowy. Rzadziej MVC nazywany jest wzorcem złożonym lub kombinacją kilku wzorców, które współpracują w celu implementacji złożonych aplikacji. Ale tak naprawdę, jak powiedziano wcześniej, MVC to przede wszystkim zbiór pomysłów/zasad/podejść architektonicznych, które można wdrożyć na różne sposoby, korzystając z różnych wzorców... Następnie spróbujemy przyjrzeć się głównym ideom zawartym w koncepcji MVC.Co to jest MVC: podstawowe idee i zasady
- VC to zbiór pomysłów i zasad architektonicznych służących do budowania złożonych systemów informatycznych z interfejsem użytkownika;
- MVC to akronim oznaczający kontroler widoku modelu.
Krok 1: Oddziel logikę biznesową aplikacji od interfejsu użytkownika
Kluczową ideą MVC jest to, że dowolną aplikację posiadającą interfejs użytkownika można w pierwszym przybliżeniu podzielić na 2 moduły: moduł odpowiedzialny za realizację logiki biznesowej aplikacji oraz interfejs użytkownika. Pierwszy moduł będzie implementował główną funkcjonalność aplikacji. Moduł ten będzie rdzeniem systemu, w którym zaimplementowany jest model domeny aplikacji. W koncepcji MVC modułem tym będzie nasza litera M, czyli. Model. Drugi moduł zaimplementuje cały interfejs użytkownika, łącznie z wyświetlaniem danych użytkownikowi i logiką interakcji użytkownika z aplikacją. Głównym celem tej separacji jest zapewnienie, że rdzeń systemu (Model w terminologii MVC) może być niezależnie rozwijany i testowany. Architektura aplikacji po takim podziale będzie wyglądać następująco:Krok 2. Korzystając ze wzorca Observer, osiągnij jeszcze większą niezależność modelu, a także synchronizację interfejsów użytkownika
Tutaj realizujemy 2 cele:- Osiągnij jeszcze większą niezależność modelu.
- Synchronizuj interfejsy użytkownika.
Krok 3. Podział interfejsu na Widok i Kontroler
Nadal dzielimy aplikację na moduły, ale na niższym poziomie hierarchii. W tym kroku interfejs użytkownika (który w kroku 1 został wydzielony na osobny moduł) dzieli się na widok i kontroler. Trudno jest narysować ścisłą granicę między widokiem a kontrolerem. Jeśli powiemy, że widok jest tym, co widzi użytkownik, a kontroler to mechanizm, za pomocą którego użytkownik może wchodzić w interakcję z systemem, to pojawia się pewna sprzeczność. Elementy sterujące, takie jak przyciski na stronie internetowej lub wirtualna klawiatura na ekranie telefonu, są zasadniczo częścią kontrolera. Ale są one tak samo widoczne dla użytkownika, jak każda część widoku. Tutaj mówimy bardziej o podziale funkcjonalnym. Głównym zadaniem interfejsu użytkownika jest zapewnienie interakcji użytkownika z systemem. Oznacza to, że interfejs posiada tylko 2 funkcje:- wyświetlać i wygodnie wyświetlać użytkownikowi informacje o systemie;
- wprowadzać do systemu dane użytkownika i polecenia (przesyłać je do systemu);
- Zgodnie z zasadami MVC system należy podzielić na moduły.
- Najważniejszym i niezależnym modułem powinien być model.
- Model jest rdzeniem systemu. Potrzebujesz umiejętności jego rozwijania i testowania niezależnie od interfejsu.
- Aby to zrobić, na pierwszym etapie segregacji systemu należy podzielić go na model i interfejs.
- Następnie wykorzystując wzorzec Observer wzmacniamy niezależność modelu i uzyskujemy synchronizację interfejsów użytkownika.
- Trzecim krokiem jest podzielenie interfejsu na kontroler i widok.
- Wszystko, co jest potrzebne do wprowadzenia informacji od użytkownika do systemu, znajduje się w kontrolerze.
- Wszystko, co wysyła informacje z systemu do użytkownika, jest widoczne.
GO TO FULL VERSION