Model-View-Controller

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 2a03:d000:6505:333e:d1ad:525a:73dc:2532 (обсуждение) в 04:49, 7 июня 2023 (afg). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Model-View-Controller
англ. Model-View-Controller
Структура
  • Модель
  • Контроллер
  • Представление
Описан в Design Patterns Нет

История

Коные позиции по отношению к остальным фреймворкам без этого шаблона[1].

Различия описания концепции шаблона

С развитием объектно-ориентированного программирования и понятия о шаблонах проектирования — был создан ряд модификаций концепции MVC, которые при реализации у разных авторов могут отличаться от оригинальной. Так, например, Эриан Верми в 2004 году описал пример обобщённого MVC[2].

В предисловии к дисзователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:

Концеп

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

Функциональные возможности и расхождения

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

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

Такжого иерархического вида — может использоваться шаблон «компоновщик». Кроме того, могут использоваться и другие шаблоны проектирования — например, «фабричный метод», который позволит задать по умолчанию тип контроллера для соответствующего вида.

Наиболее частые ошибки

Начинающие программисты очень часто трактуют архитектурную модель MVC как пассивную модель MVC: модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате — код моделей по факту является средством получения данных из СУБД, а контроллер — типичным модулем, наполненным бизнес-логикой. В результате такого понимания — MVC-разработчики стали писать код, который Падриг Брэди (известный в кругах сообщества «Zend Framework») охарактеризовал как «ТТУК» («Толстые, тупые, уродливые контроллеры»; Fat Stupid Ugly Controllers):

Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, проверял, записывал, а также передавал данные в Представление. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.

[http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/ The M in MVC: Why Models are Misunderstood and Unappreciated

Но в объектно-ориентированном программировании используется активная модель[3] MVC, где модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика; также модели могут инкапсулировать в себе другие модели. Контроллеры же, — как элементы информационной системы, — ответственны лишь за:

  • приём запроса от пользователя;
  • анализ запроса;
  • выбор следующего действия системы, соответственно результатам анализа (например, передача запроса другим элементам системы).

Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами информационной системы.

См. также

Примечания

  1. hotframeworks. Дата обращения: 10 января 2017. Архивировано 10 февраля 2017 года.
  2. Vermeij. Arjan A Generic MVC Model in Java Архивная копия от 1 октября 2011 на Wayback Machine 2004
  3. Обобщенный Model-View-Controller. Дата обращения: 17 июня 2020. Архивировано 17 февраля 2020 года.

Литература

  • Адам Фримен. ASP.NET MVC 4 с примерами на C# 5.0 для профессионалов, 4-е издание = Pro ASP.NET MVC 4, 4th edition. — М.: «Вильямс», 2013. — 688 с. — ISBN 978-5-8459-1867-3.
  • Джесс Чедвик и др. ASP.NET MVC 4: разработка реальных веб-приложений с помощью ASP.NET MVC = Programming ASP.NET MVC 4: Developing Real-World Web Applications with ASP.NET MVC. — М.: «Вильямс», 2013. — 432 с. — ISBN 978-5-8459-1841-3.
  • Сергей Рогачев. Обобщённый Model-View-Controller // rsdn.org. — 2007.

Ссылки