Цей матеріал - частина циклу "Введення в Enterprise-розробку". Попередні статті:
- про мережу ;
- про архітектуру ПЗ ;
- про протоколи HTTP/HTTPS ;
- про основи Maven ;
- про сервлети (пишемо просте веб-додаток) ;
- про контейнери сервлетів .
Історія створення MVC
Ідеї MVC сформулював Трюгве Реєнскауг (Trygve Reenskaug) під час роботи у Xerox PARC наприкінці 70-х років. У ті часи для роботи з ЕОМ не обійтися без наукового ступеня і постійного вивчення об'ємної документації. Завдання, яке Реенскауг вирішував разом із групою дуже сильних розробників, полягала у тому, щоб спростити взаємодію пересічного користувача з комп'ютером. Необхідно було створити кошти, які з одного боку були б гранично простими та зрозумілими, а з іншого — давали б можливість керувати комп'ютером та складними програмами. Реєнскауг працював у команді, яка займалася розробкою портативного комп'ютера "для дітей різного віку" - Dynabook, а також мови SmallTalk під керівництвом Алана Кея (Alan Kay). Саме тоді й там закладалися поняття доброзичливого інтерфейсу. Робота Реєнськауга разом із командою багато в чому вплинула на розвиток сфери IT. Наведемо цікавий факт, який безпосередньо не відноситься до MVC, але ілюструє значущість тих розробок. У 2007 році після презентації Apple iPhone Алан Кей сказав: “Коли вийшов Macintosh, у Newsweek запитали, що я про нього думаю. Я сказав: це перший персональний комп'ютер, гідний критики. Після презентації Стів Джобс підійшов і запитав: чи гідний iPhone критики? І я відповів: Зробіть його розміром п'ять на вісім дюймів, і ви завоюєте мир”. Через 3 роки, 27 січня 2010 року, Apple представила iPad діагоналлю 9,7 дюйми. Тобто Стів Джобс майже буквально дотримувався поради Алана Кея. Проект, над яким працював Реннскауг, вівся протягом 10 років. А перша публікація про MVC від його творців побачила світ ще через 10 років. Мартін Фаулер, автор низки книг та статей з архітектури ПЗ, згадує, що він вивчав MVC за працюючою версією SmallTalk. Оскільки інформації про MVC з першоджерела довго не було, а також з інших причин, з'явилася велика кількість різних трактувань цього поняття. В результаті багато хто вважає MVC схемою або патерном проектування. Рідше MVC називають складеним патерном або комбінацією кількох патернів, що працюють спільно для реалізації складних програм. Але насправді, як було сказано раніше, MVC - це насамперед набір архітектурних ідей/принципів/підходів, які можна реалізувати різними способами з використанням різних шаблонів... Далі ми спробуємо розглянути основні ідеї, закладені в концепції MVC. Оскільки інформації про MVC з першоджерела довго не було, а також з інших причин, з'явилася велика кількість різних трактувань цього поняття. В результаті багато хто вважає MVC схемою або патерном проектування. Рідше MVC називають складеним патерном або комбінацією кількох патернів, що працюють спільно для реалізації складних програм. Але насправді, як було сказано раніше, MVC - це насамперед набір архітектурних ідей/принципів/підходів, які можна реалізувати різними способами з використанням різних шаблонів... Далі ми спробуємо розглянути основні ідеї, закладені в концепції MVC. Оскільки інформації про MVC з першоджерела довго не було, а також з інших причин, з'явилася велика кількість різних трактувань цього поняття. В результаті багато хто вважає MVC схемою або патерном проектування. Рідше MVC називають складеним патерном або комбінацією кількох патернів, що працюють спільно для реалізації складних програм. Але насправді, як було сказано раніше, MVC - це насамперед набір архітектурних ідей/принципів/підходів, які можна реалізувати різними способами з використанням різних шаблонів... Далі ми спробуємо розглянути основні ідеї, закладені в концепції MVC. Рідше MVC називають складеним патерном або комбінацією кількох патернів, що працюють спільно для реалізації складних програм. Але насправді, як було сказано раніше, MVC - це насамперед набір архітектурних ідей/принципів/підходів, які можна реалізувати різними способами з використанням різних шаблонів... Далі ми спробуємо розглянути основні ідеї, закладені в концепції MVC. Рідше MVC називають складеним патерном або комбінацією кількох патернів, що працюють спільно для реалізації складних програм. Але насправді, як було сказано раніше, MVC - це насамперед набір архітектурних ідей/принципів/підходів, які можна реалізувати різними способами з використанням різних шаблонів... Далі ми спробуємо розглянути основні ідеї, закладені в концепції MVC.Що таке MVC: основні ідеї та принципи
- VC - це набір архітектурних ідей і принципів для побудови складних інформаційних систем з інтерфейсом користувача;
- MVC – це абревіатура, яка розшифровується так: Model-View-Controller.
Крок 1. Відокремити бізнес-логіку програми від інтерфейсу користувача
Ключова ідея MVC полягає в тому, що будь-яка програма з інтерфейсом користувача в першому наближенні можна розбити на 2 модулі: модуль, що відповідає за реалізацію бізнес-логіки програми, і інтерфейс користувача. У першому модулі буде реалізовано основний функціонал програми. Даний модуль буде ядром системи, в якому реалізується модель предметної області застосування. У концепції MVC цей модуль буде нашою буквою M, тобто. моделлю. У другому модулі буде реалізований весь інтерфейс користувача, включаючи відображення даних користувачеві і логіку взаємодії користувача з додатком. Основна мета такого поділу – зробити так, щоб ядро системи (Модель у термінології MVC) могло незалежно розроблятися та тестуватися. Архітектура програми після такого поділу буде виглядати так:Крок 2. Використовуючи шаблон Спостерігач, домогтися ще більшої незалежності моделі, а також синхронізації інтерфейсів користувача
Тут ми маємо 2 цілі:- Досягти ще більшої незалежності моделі.
- Синхронізувати інтерфейси користувача.
Крок 3. Поділ інтерфейсу на Вид та Контролер
Продовжуємо ділити програму на модулі, але вже на нижчому рівні ієрархії. На цьому кроці інтерфейс користувача (який був виділений в окремий модуль на кроці 1) ділиться на вигляд і контролер. Важко провести сувору межу між видом і контролером. Якщо говорити про те, що вид це те, що бачить користувач, а контролер це механізм, завдяки якому користувач може взаємодіяти з системою, можна виявити деяке протиріччя. Елементи керування, наприклад, кнопки на веб-сторінці або віртуальна клавіатура на екрані телефону, це, по суті, частина контролера. Але вони так само видно користувачеві, як будь-яка частина виду. Тут швидше йдеться про функціональний поділ. Основне завдання інтерфейсу користувача - забезпечити взаємодію користувача з системою. Це означає, що в інтерфейсу всього 2 функції:- виводити та зручно відображати користувачеві інформацію про систему;
- вводити дані та команди користувача в систему (передавати їх системі);
- Дотримуючись принципів MVC, систему потрібно розділяти на модулі.
- Найважливішим і найнезалежнішим модулем має бути модель.
- Модель – ядро системи. Потрібна можливість розробляти та тестувати її незалежно від інтерфейсу.
- Для цього на першому етапі сегрегації системи необхідно розділити її на модель та інтерфейс.
- Далі, за допомогою шаблону Спостерігач, зміцнюємо модель в її незалежності і отримуємо синхронізацію інтерфейсів користувача.
- Третім кроком ділимо інтерфейс на контролер та вигляд.
- Все, що на введення інформації від користувача в систему - це контролер.
- Все що на виведення інформації від системи до користувача це у вид.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ