Что такое MVC

Рассказываю об одном из самых удобных паттернов построения приложений на любом языке и в любой области. 

Что такое паттерн?

Рядом с аббревиатурой MVC почти всегда фигурирует англицизм – паттерн. Это слово означает «шаблон», и этот перевод отлично подходит в нашем случае, так как MVC как раз описывает некую пошаговую модель поведения разработчика. 

Мы будем говорить об образце, по которому строится процесс разработки приложения. 

Паттерны используются в крупных компаниях и программистами-одиночками для поддержания кода программы в едином стиле и для создания менее абстрактного плана действий по реализации новых функций. Проще говоря, зная, как должно строиться ПО, легче начать над ним работу.

Расшифровка паттерна MVC

За аббревиатурой MVC стоят слова Model, View и Contoller. 

  • Model – это внутренняя структура с набором алгоритмов, которая решает поставленные перед ней задачи, обособленно от программы. Грубо говоря, эта функция выполняет код, обрабатывая входные данные. 
  • View – это то, что видит пользователь приложения. То есть интерфейс, в который он вносит данные или через который запрашивает какие-либо изменения. 
  • Controller – это прослойка между двумя сущностями, принимающая информацию из View и передающая их в Model. И обратно. 

Ключевые аспекты концепции MVC

Обычно разработчики, пытаясь объяснить идею MVC, начинают приводить аналогии из реального мира. В частности, аналогию с рестораном. 

Когда вы в него приходите, вы фактически сталкиваетесь с неким интерфейсом, пусть это будет меню. Делая заказ, вы указываете на позицию в меню и сообщаете о ней официанту, принимающему заказ. Он получает данные от вас через интерфейс и передает их модели, то есть повару.

Повар выполняет свою работу, ничего не зная о вас. Он лишь знает ту толику информации, что ему передал официант – «приготовь блюдо N». Затем повар, то есть модель, отдает обратно уже переработанную информацию в виде готового блюда. А вы получаете его от контроллера-официанта, вообще ничего не зная о процессе создания сделанного ранее заказа. 

В итоге мы получаем абстрактную модель взаимодействия, в которой каждый компонент выполняет конкретную задачу. 

  • Model – не задает лишних вопросов и выполняет функцию, отрабатывая все входящие данные и не имея доступа к каким-либо внешним переменным и дополнительной информации. 

  • View – предоставляет внешний инструментарий для пользователя с той функциональностью, которая изначально было предусмотрена разработчиком. 

  • Controller – оперирует данными, чтобы каждый получил именно то, что требуется. 

Зачем использовать паттерн MVC?

Идея MVC заключается в создании приложения из слабо зависимых блоков. Таким образом, поддерживается общая абстрактность, а это позитивно сказывается на отказоустойчивости всей программы. Ведь можно внести изменения в блок Model, но не трогать View с Controller, и они продолжат стабильно выполнять свою работу. 

Вернувшись к примеру с рестораном, можно представить, что вы заменили повара. Он начал готовить блюда совершенно иным образом, выполняя при этом какие-то дополнительные задачи, но меню никак не изменилось. Как и официант. 

В приложении это может выглядеть как замена алгоритма поиска запрашиваемой информации (или любого другого алгоритма) без необходимости менять интерфейс программы. Для пользователя приложение останется все тем же, и ему не придется изучать новые алгоритмы взаимодействия с вашим продуктом. 

Также практики MVC позволяют разработчикам работать в команде, занимаясь разными блоками кода и не мешая друг другу. 

MVC в реальном приложении

Посмотрим, как это приблизительно оформлено в живом коде. Давайте сделаем калькулятор (ну а что еще делают начинающие программисты). 

Сначала напишем небольшой интерфейс в HTML-документе. Мы просто добавим пару кнопок и два поля для ввода данных. Да, калькулятор у нас будет довольно посредственный и не особо умный. 

Потом добавим «слушатель», то есть дадим браузеру команду отслеживать клики по заранее определенным кнопкам. В нашем случае это кнопка с тегом summarize. Это и есть наш контроллер, он будет передавать данные из интерфейса в модель, а потом забирать их и возвращать в интерфейс. 

Наша модель в этом случае производит элементарный расчет, принимая два аргумента и выполняя заданную в ней функцию (у нас это функция сложения).

Пользователь перед собой увидит вот такой несложный интерфейс, и ему все равно, как вы реализовали вычисление. Он получает результат. Каждый компонент занят своим делом.

Я могу заменить сложение на вычитание в модели, и контроллер с интерфейсом ничего не будут иметь против (правда, удивится пользователь). 

Вместо заключения 

Как видите, концепция MVC довольно проста в понимании. Идея проста, но научиться делать независимые блоки куда сложнее, чем кажется на первый взгляд. Для этого потребуется длительная практика, но оно того точно стоит.

Межтекстовые Отзывы
Посмотреть все комментарии
guest

Что такое рефакторинг кода

Разработка #Обзор #Технологии #IDE #Редакторы кода #JavaScript Зачем разработчики на регулярной основе переписывают свой и чужой код, не...

Лучшие IDE и редакторы кода для Python

Разработка #Программы #IDE #Редакторы кода #Python Писать программный код можно хоть карандашом на листке бумаги. Рационально ли это?...

GitHub включил по умолчанию механизм защиты от утечек данных

Новости #GitHub #Сервисы #Безопасность Реклама. ООО «ТаймВэб». erid: LjN8K4hV8 Сервис GitHub включил защиту от попадания в публичный репозиторий приватных...

Преимущества и недостатки CMS 1С-Битрикс

Разработка #1С #Обзор #Интернет-магазин #Веб-дизайн #Bitrix 1С-Битрикс – одна из самых популярных CMS, на которой работают тысячи сайтов....

Уровни языков программирования: краткий обзор

Разработка #Обзор #Технологии #Железо #Программы Рассказываю о том, почему языки программирования делятся на уровни, что эти уровни обозначают...

Преимущества и недостатки WordPress

Разработка #Обзор #WordPress WordPress довольно старая система управления содержимым сайтов (сокращенно — CMS), вебмастера и администраторы с ней...

Сравнение 29 сервисов аналитики маркетплейсов: обзор, рейтинг

Обзор сервисов аналитики маркетплейсов Сравнение 29 сервисов аналитики маркетплейсов по 10 параметрам. Обзор, рейтинг лучших сервисов для аналитики...

Создание email рассылок на Joomla

Создание почтовых рассылок – это эффективный способ рекламы и привлечения внимания к своему сайту. Я уже рассказывала о...

PHP: работа с БД MySQL

Разработка #Серверы #MySQL #PHP #Базы данных Базы данных используются для удобного хранения информации, а также для её структурирования....

Виды алгоритмов сортировки в Python

Разработка #Обзор #Редакторы кода #Python В одной из прошлых статей я рассматривал списки в Python, а также затронул их сортировку....

Как сделать приложение из веб-сайта

Разработка #Плагины #Веб-дизайн #Сервисы #WordPress #Конструктор Разработчики популярных веб-ресурсов стараются сделать все возможное, чтобы клиентам было комфортно потреблять...

Работа в IT: современные тенденции

Разработка #Технологии #Карьера #Менеджмент #Разбор Работа в IT-сфере как была перспективным направлением и путем к успешной карьере, так...

Как измерить и повысить вовлечённость пользователей сайта

Автор: Виталий Купренко ­– маркетинговый копирайтер, компания по разработке мобильных и веб-приложений Cleveroad. Согласно исследованию Gallup, полностью вовлечённые...

Что такое дополненная реальность

Разработка #Google #Продажи #Технологии #Сервисы Выбирали когда-нибудь кроссовки или диван в интернете? Не очень удобно, верно? Было бы...

Сравнение VPS и облачного хостинга для Bitrix

В современном мире веб-технологий выбор между VPS (виртуальным частным сервером) и облачным хостингом для системы управления контентом, такой...

7 самых популярных фреймворков JavaScript

Разработка #Фреймворки #Обзор #JavaScript Статья посвящена самым популярным фреймворкам, библиотекам и инструментам JavaScript. Каждый из них может значительно облегчить...

Как пользоваться редактором Atom

Разработка #GitHub #Редакторы кода #HTML/CSS #PHP Atom – это многофункциональный текстовый редактор от разработчиков GitHub. Он поддерживает огромное...

Push-уведомления: типы, назначение, советы по созданию

Разработка #Конверсия #Интернет-магазин #Веб-дизайн #Продажи Сегодня поговорим о push-уведомлениях. Как они работают, зачем нужны и какими должны быть.  Что такое...

5 главных способов привлечения клиентов из карт и отзывиков

Бизнес #Продажи #Предпринимательство #SEO Реклама. ООО «ТаймВэб». erid: LjN8KQs4Z Мы в MyReviews делаем инструменты для мониторинга и улучшения рейтинга...

10 лучших конструкторов сайтов

Разработка #Веб-дизайн #Сервисы #Подборка #HTML/CSS #Конструктор Конструктор сайтов – это специальный сервис, позволяющий создать сайт без помощи программистов и...