undefined

На какие блоки правильно делить программу или что такое MVC?

Harvard CS50
8 уровень , 2 лекция
Открыта
cs50 mvc

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

Логика игры — одинаковая, а вот интерфейс, управление — разные. На компьютере игрок использует «живую» клавиатуру и мышь, на смартфоне — только виртуальные кнопочки, которые еще нарисовать нужно. Что делать? Дважды переписывать?

Для решения этих и других проблем был придуман принцип построения программ MVC (Model-View-Controller).

Model — это самая суть приложения, его логика. Скажем, описанные и реализованные программно правила «Тетриса» без проверки правильности, без графики. На эту часть пользователь не влияет, она для него закрыта.

View содержит всё, что касается отображения данных пользователю. Именно в ней содержится код, который управляет показом окон, страниц, сообщений — интерфейс.

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

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

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

Комментарии (1)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Даниил 41 уровень Master
23 марта 2020
Описаное выше в общих чертах именно то, что задумывалось под MVC, но кому интересно - ознакомтесь: Что такое MVC на самом деле. Также кратко на вики описаны "Наиболее частые ошибки" в понимании MVC где довольно просто и кратко описано как должен выглядить настоящий MVC. Если кратко, то суть в следующем: MVC - это не паттерн, и даже не составной паттерн (хотя он использует реализацию нескольких паттернов), а архитектурный подход к построению приложения. Имеет такие основные принципы: 1) Отделение модели предметной области (бизнес логики) приложения от пользовательского интерфейса; 2) Независимость Модели и синхронизация пользовательских интерфейсов за счет шаблона "Наблюдатель"; 3) Разделение Пользовательского Интерфейса на Вид и Контроллер. Самое главное что Модель в настоящем понимании MVC это не просто данные или бизнес логика, это интерфейс взаимодействия с данными и бизнес логикой которые представляют сложную структуру классов (реализует так называемый паттерн "Фасад") за счёт чего обеспечиваеться "слабое связывание" бизнес логики с пользовательским интерфейсом. За счёт того что Модель - это "Фасад", гораздо легче реализовать паттерн "Наблюдатель" который так же обеспечивает "слабое связывание" и позволяет вести разработку и поддержку бизнес логики абсолютно ничего не зная и не завися от пользовательского интерфейса (Представления и Контроллера). Так же Контроллер не должен на себя брать часть (или всю) бизнес логики, а просто должен обрабатывать пользовательские запросы и передавать их Модели (Фасаду).