Лекция 1
MVC (Model-View-Controller) - это конструкционный шаблон, который описывает способ построения структуры приложения, сферы ответственности и взаимодействие каждой из частей в данной структуре. Преимущество, которое получают от использования концепции MVC - это чёткое разделение логики представления (интерфейса пользователя) и логики приложения. Концепция MVC
Model-View-Controller «Модель-вид-контроллер» «Модель-представление-поведение», «Модель-представление-контроллер»
Модель возвращает одинаковые данные, единственное различие заключается в том, что контроллер выбирает различные виды для вывода данных. Помимо изолирования видов от логики приложения, концепция MVC существенно уменьшает сложность больших приложений. Код получается гораздо более структурированным, и, тем самым, облегчается поддержка, тестирование и повторное использование решений.
Идея, которая лежит в основе конструкционного шаблона MVC, очень проста: нужно чётко разделять ответственность за различное функционирование в приложениях:
Применение паттерна MVC заключается в разделении собственно данных, их отображения и обработки действий пользователя по трем компонентам.
Модель (Model) Собственно данные, методы для работы с данными, изменения и обновления данных. Представление/Вид (View) Отображение данных, оформление и другие аспекты презентации модели Контроллер (Controller) Реагирует на действия пользователя, интерпретирует данные, введенные пользователем, и информирует модель и производит необходимые манипуляции с моделью и видом.
Обработка запроса пользователя для просмотра списка книг
Контроллер получает запрос пользователя [1]. Контроллер проверяет запрос и параметры, а затем вызывает модель, запрашивая у неё список доступных книг по теме фэнтези [2]. Модель получает данные из базы (или из другого источника, в котором хранится информация) [3], применяет фильтры и необходимую логику, а затем возвращает данные, которые представляют список книг [4]. Контроллер использует подходящий вид [5] для представления данных пользователю [6-7]. Если запрос приходит с мобильного телефона, используется вид для мобильного телефона; если пользователь использует определённое оформление интерфейса, то выбирается соответствующий вид, и так далее.