Модель-View-Controller (MVC), що пояснюється замовленням напоїв у барі

Якщо ви були в барі, то MVC не так вже й складно.

Фреймворки Model-View-Controller (MVC) є важливою частиною побудови сучасних веб-додатків. Зайдіть у кімнату веб-розробників, і, ймовірно, вас засипають згадки про Ruby on Rails, Angular або Django.

Більш загально, логіку MVC можна використовувати для опису майже будь-якого процесу веб-розробки, який використовує таку мову, як PHP, Ruby, Python або JavaScript.

Тим не менше ...

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

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

Сміливо зламуйте перешкоди, поки реальність не потрапить

Що таке шаблон MVC?

  • Модель : Структурує ваші дані у надійній формі та готує їх відповідно до вказівок контролера
  • Перегляд : Показує дані користувачеві в зручному для розуміння форматі на основі дій користувача
  • Контролер : приймає команди користувача, надсилає команди моделі для оновлення даних, надсилає інструкції для перегляду для оновлення інтерфейсу.

Або у вигляді схеми:

Це було нудно. У бар.

Початковий веб-розробник заходить у бар ...

Ви заходите в бар у п’ятницю ввечері і підходите до бармена. Оскільки в барі вже переповнене, ви пробиваєтесь крізь натовп, поки нарешті не привертаєте увагу бармена, і не вигукуєте: "Один Манхеттен, будь ласка!"

Ви - користувач , а замовлення напоїв - це запит користувача . Для вас Манхеттен - це просто ваш улюблений напій, і ви досить надійно знаєте, що це буде солодкий і смачний напій.

Бармен швидко киває. Для бармена Манхеттен - це не смачний напій, це лише ряд кроків:

  1. Візьміть скло
  2. Додайте віскі
  3. Додайте вермут
  4. Додайте гіркі
  5. Перемішайте напій
  6. Додати вишню
  7. Попросіть кредитну картку та стягніть плату.

Мозок бармена є контролером . Як тільки ви вимовляєте слово "Манхеттен" мовою, яку вони розуміють, робота починається. Ця робота за своєю суттю схожа на приготування маргарити або полуничного дайкірі, але використовує різні інгредієнти, які ніколи не будуть плутати. Бармен може використовувати лише ті інструменти та ресурси, які знаходяться за решіткою. Цей обмежений набір інструментів є моделлю та включає наступне:

  • Руки бармена
  • Шейкери / обладнання для змішування
  • Напої
  • Суміші
  • Окуляри
  • Гарніри

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

Нарешті, готовий напій, який ви можете побачити та спожити, - це вигляд. Вигляд побудований з обмежених можливостей моделі, організований та переданий через контролер (тобто мозок бармена).

Вивчені уроки

  • Хочете ще випити? Крики на вашу порожню склянку, вид, абсолютно не принесуть вам жодної користі. Ви повинні поговорити з барменом.
  • Час, який бармен прослуховує прохання і починає створювати напій, повинен бути абсолютно мінімальним. Це іноді називають "худим контролером" - іншими словами, контролер повинен містити мінімальну кількість логіки і якомога більше делегувати моделі. Чудовий бармен не тільки запам’ятає рецепти, але й щовечора надійно готуватиме інгредієнти та інструменти, щоб мінімальний обсяг пошуку та домовленості був необхідний, коли клієнти почнуть замовляти.
  • Чи міг бармен вилити всі інгредієнти безпосередньо в рот споживача і очікувати, що клієнт розмахує його і змішує напій? Так, можливо, я припускаю. Ви хочете зберегти якомога більше своєї логіки в моделі, на відміну від подання. Іншими словами, приготування напою за барною стійкою переважно замішувати його в роті клієнта.
  • Якщо ви замовите пиво, бармену навряд чи потрібно буде щось робити. Можливо, вони просто знімуть кришку і передадуть вам напій. З огляду на це, ви все одно повинні попросити бармена. Пиво чарівно не постане перед вами.

Пов’язання його з веб-розробкою

Ось як відбувається той самий процес у сучасній веб-програмі:

  • Користувач робить запит по маршруту, скажімо / додому.
  • Контролер приймає цей запит і дає певний набір замовлень, пов'язаних з цим маршрутом. Ці вказівки можуть стосуватися оновлення подання або обслуговування певної сторінки або моделі для виконання певної логіки. Припустимо, цей запит пов’язаний із певною логікою.
  • Модель виконує логіку, витягує з бази даних і надсилає послідовну відповідь на основі інструкцій контролера.
  • Потім контролер передає ці дані у подання для оновлення інтерфейсу користувача.

Щоразу, коли надходить запит, він спочатку повинен перейти до контролера, перш ніж його можна буде перетворити в інструкції для подання або моделі. Стаття вікіпедії Ruby on Rails містить подальший огляд, якщо ви шукаєте більше.

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

Це має набагато простіше навчитися - як тільки ви один раз розвинетесь за допомогою MVC, кожен новий фреймворк може вписатися в вашу зону комфорту.

Вам сподобався цей путівник? Повідомте мене в коментарях!