— Привіт, Аміго!

— Привіт, Білаабо!

— Ти вже серйозний програміст. Тому сьогодні ми матимемо лекцію про MVC.

MVC розшифровується як ModelViewController. Це принцип побудови архітектури великого додатку, за якого вона розбивається на три частини.

Перша частина містить всю бізнес-логіку програми. Така частина називається Модель (Model). У ній міститься код, який робить все те, для чого програма створювалася. Ця частина є найбільш незалежною від інших.

Друга частина містить все, що стосується відображення даних користувача. Така частина називається Вигляд (View). Саме в ній міститься код, який керує показом вікон, сторінок, повідомлень тощо.

Третя частина містить код, який займається обробкою дій користувача. Будь-які дії користувача, спрямовані на зміни моделі, повинні бути оброблені тут. Така частина називається Controller.

Такий підхід дозволяє незалежно робити три речі: логіку програми (Model)механізм показу всіх даних програми користувачеві (View) обробляти введення/дії користувача (Controller).

Дуже часто у додатку буває кілька View. Це нормально. Ви можете бачити в Excel ті самі дані у вигляді чисел і діаграм. В іграх ви можете дивитися на події від імені героя, на карті, збоку і т.д. Все це – це різні View для однієї Model.

У Controller’е зосереджений весь код, який приймає рішення, що змінювати в моделі у відповідь на дії користувача. Наприклад, користувач вирішив закрити програму, тоді треба зберегти дані моделі файл на диск. Або користувач запровадив нові дані. Тоді треба додати їх до моделі, а модель потім повідомить весь View про зміну даних, щоб вони відображали лише актуальний їхній стан.

— Ще раз.

— З точки зору Java-програміста можна сказати, що Model, View, Controller – це три групи класів, у яких:

а) у кожної частини є своє призначення;

б) зв'язки між класами однієї групи досить сильні;

в) зв'язки між групами досить слабкі;

г) способи взаємодії частин досить сильно регламентовані.

І ось тобі ще така картинка:

MVC - 1

Модель – це сама незалежна частина системи. Вона не залежить від перегляду & Controller. Модель не може використовувати класи з розділів View & Controller(!).

Основне обмеження виду (View) – вид не може змінювати модель. Класи виду можуть звертатися до моделі за даними або підписуватись на події, але змінювати модель класи View не можуть.

Основне обмеження контролера - він не займається відображенням даних. Контролер обробляє дії користувача та змінює відповідно до них модель.

— А навіщо мені це?

— Те, що ти це не застосовуєш зараз, ще не означає, що не застосовуватимеш у найближчому майбутньому. Ти ж тут навчаєшся, щоб працювати піти. І навіть якщо ці знання не стануть тобі в нагоді під час навчання, вони точно знадобляться тобі під час роботи.

А на тебе чекають ще реальні проекти та співбесіди…

Ми тут зараз з тобою розмовляємо, а може, через місяць ти вже працюватимеш.

— Ти абсолютно правий, Білаабо. Я уважно слухаю тебе.

— Підхід MVC в архітектурі програм зустрічається досить часто. Ти повинен це знати, щоб раптом не почати додавати класи для View Model, т.к. так зручніше.

Найголовніше у будь-якому проекті – це його архітектура. Твоє завдання на нинішньому етапі — не стільки зробити хорошу архітектуру, скільки навчитися розбиратися в чужій. До своєї ти ще потім кілька років рости будеш. А чужу треба розуміти. Відразу.

Коли у додатку використовується стандартна архітектура, все стає набагато зрозумілішим. Знаючи архітектуру, ти знаєш, що де лежить, як усе взаємодіє, як програма працює, де додати потрібний тобі клас і де шукати причину помилки.

Але, якщо ти не знайомий зі стандартними підходами до архітектури, то тобі навіть найкраща архітектура ні про що не скаже. Дивитимешся, як селянин 15 століття на новий автомобіль. Стандартний автомобіль.

— Зрозуміло. Дякую, за цікаву лекцію, Білаабо.

Ось тобі наостанок хороше посилання — обов'язково подивися: https://ua.wikipedia.org .