MVC (Model-View-Controller) — шаблон проектирования архитектуры приложений. Он используется чтобы разделить логику всего приложения на три элемента, связанных друг с другом. Это позволяет разделить представление информации “внутри” приложения и то, как эту информация видит и вводит пользователь. Благодаря этому упрощается поддержка приложения “на большой дистанции”, то есть в долгосрочной перспективе такое приложение будет легче поддерживать чем приложение у которого вообще нет никакой архитектуры.
Данный шаблон делит логику приложения на три части:
- Model (Модель). Отвечает за представление данных “внутри” приложения. Зачастую это слой, который отвечает за получение данных либо из базы данных в самом приложении, либо за совершение запросов на сервер. Так же данный слой содержит бизнесс-логику приложения
- View (Представление). Отвечает за представление данных модели пользователю, а так же за интерпретацию действий пользователя (например пользователь нажал кнопку, ввел текст и тд). Отправляет действия пользователя в контроллер
- Controller (Контроллер). Контроллеру приходят действия пользователя. Можно представить что это геймпад, которым управляет пользователь. Контроллер отвечает за прием действий пользователя, интерпретацию данных действий и изменение модели в соответствии с данными действиями
В итоге получается такая схема, что Пользователь использует Контроллер для взаимодействия с приложением, Контроллер интерпретирует, что сделал пользователь и оповещает Модель о том, как ей нужно измениться, Модель меняется и оповещает Представление о том, что Представлению нужно отобразить на экране новые данные для Пользователя.
Замкнутый круг: Пользователь использует Контроллер, Контроллер меняет Модель, а Модель обновляет Представление, которое видит Пользователь.