Модель – представление – контроллер (обычно известный как MVC ) - это шаблон проектирования программного обеспечения [1], обычно используемый для разработки пользовательских интерфейсов, который разделяет связанную логику программы на три взаимосвязанных элемента. Это сделано для того, чтобы отделить внутреннее представление информации от способов, которыми информация представляется пользователю и принимается от него. [2] [3]
Этот шаблон, традиционно используемый для настольных графических пользовательских интерфейсов ( GUI ), стал популярным для разработки веб-приложений . [4] Популярные языки программирования, такие как JavaScript , Python , Perl , Object Pascal / Delphi , Ruby , PHP , Java , C # , Swift и Elixir, имеют инфраструктуры MVC, которые используются для разработки веб-приложений или мобильных приложений прямо из коробки .
Компоненты [ править ]
- Модель
- Центральная составляющая узора. Это динамическая структура данных приложения, не зависящая от пользовательского интерфейса. [5] Он напрямую управляет данными, логикой и правилами приложения.
- Вид
- Любое представление информации, такое как диаграмма, диаграмма или таблица. Возможны несколько представлений одной и той же информации, например гистограмма для управления и табличное представление для бухгалтеров.
- Контроллер
- Принимает ввод и преобразует его в команды для модели или представления. [6]
В дополнение к разделению приложения на эти компоненты, дизайн модель – представление – контроллер определяет взаимодействие между ними. [7]
- Модель отвечает за управление данными приложения. Он получает пользовательский ввод от контроллера.
- Представление отображает представление модели в определенном формате.
- Контроллер реагирует на ввод пользователя и выполняет взаимодействия с объектами модели данных. Контроллер получает входные данные, при необходимости проверяет их и затем передает входные данные модели.
Как и другие программные шаблоны, MVC выражает «суть решения» проблемы, позволяя адаптировать ее для каждой системы. [8] Конкретные проекты MVC могут значительно отличаться от традиционного описания здесь. [9]
История [ править ]
MVC стал одним из первых подходов к описанию и реализации программных конструкций с точки зрения их ответственности . Это одно из важнейших достижений на раннем этапе разработки графических пользовательских интерфейсов . [10]
Трюгве Реенскауг представил MVC в Smalltalk -79 во время посещения Исследовательского центра Xerox в Пало-Альто (PARC) [11] [12] в 1970-х. В 1980-х Джим Альтхофф и другие реализовали версию MVC для библиотеки классов Smalltalk-80. Лишь позже в статье 1988 года в The Journal of Object Technology (JOT) MVC была выражена как общая концепция. [13]
Впоследствии шаблон MVC развился [14], что привело к появлению таких вариантов, как иерархическая модель – представление – контроллер (HMVC), модель – представление – адаптер (MVA), модель – представление – презентатор (MVP), модель – представление – модель представления ( MVVM) и другие, адаптировавшие MVC к разным контекстам.
Использование шаблона MVC в веб - приложениях взрыв популярности после введения NeXT «s WebObjects в 1996 году, который был первоначально написан в Objective-C (что в значительной степени заимствованы из Smalltalk) и помогли обеспечить соблюдение принципов MVC. Позже шаблон MVC стал популярен среди разработчиков Java, когда WebObjects был перенесен на Java . Более поздние фреймворки для Java, такие как Spring (выпущенный в октябре 2002 г.), продолжали прочную связь между Java и MVC. Введение фреймворков Django (июль 2005 г., для Python ) и Rails (декабрь 2005 г., для Ruby).), оба из которых делали упор на быстрое развертывание, повысили популярность MVC за пределами традиционной корпоративной среды, в которой он давно стал популярным.
Использование в веб-приложениях [ править ]
Первоначально разработанный для настольных компьютеров, MVC получил широкое распространение в качестве дизайна для приложений World Wide Web на основных языках программирования . Было создано несколько веб-фреймворков , обеспечивающих соблюдение этого шаблона. Эти программные фреймворки различаются по своим интерпретациям, в основном по способу разделения ответственности MVC между клиентом и сервером . [15]
В некоторых фреймворках веб-MVC используется подход тонкого клиента, который размещает почти всю логику модели, представления и контроллера на сервере. В этом подходе клиент отправляет либо запросы гиперссылки, либо представления формы в контроллер, а затем получает полную и обновленную веб-страницу (или другой документ) из представления; модель полностью существует на сервере. [15]
См. Также [ править ]
- Многоуровневая архитектура
- Иерархическая модель – представление – контроллер
- Модель – вид – адаптер
- Модель – представление – ведущий
- Модель – вид – модель просмотра
- Паттерн Entity-Control-Boundary
- Презентация – абстракция – контроль
- Действие – домен – ответчик
- Образец наблюдателя
- Разделение проблем
- Шаблон стратегии
- Обнаженные предметы
Ссылки [ править ]
- ^ https://www.youtube.com/watch?v=o_TH-Y78tt4&t=1667
- ^ Reenskaug, Трюгве; Коплиен, Джеймс О. (20 марта 2009 г.). «Архитектура DCI: новое видение объектно-ориентированного программирования» . Разработчик Artima . Архивировано из оригинала (html) 23 марта 2009 года . Дата обращения 3 августа 2019 .
Более глубоко, структура существует, чтобы отделить представление информации от взаимодействия с пользователем.
- ^ Burbeck (1992): «... пользовательский ввод, моделирование внешнего мира и визуальная обратная связь с пользователем явно разделены и обрабатываются тремя типами объектов».
- ^ Дэвис, Ян. "Каковы преимущества MVC?" . Интернет-алхимия . Проверено 29 ноября 2016 .
- ^ Burbeck, Стив (1992) Программирование приложений в Smalltalk-80: Как использовать Модель – Представление – Контроллер (MVC)
- ^ Простой пример архитектурного шаблона MVC (модель – представление – контроллер) для абстракции
- ^ Бушманн, Франк (1996) Архитектура программного обеспечения, ориентированная на шаблоны .
- ^ Гамма, Эрих и др. (1994) Паттерны дизайна
- ^ Мур, Дана и др. (2007) Профессиональные многофункциональные Интернет-приложения: Ajax и не только : «С момента зарождения MVC было много интерпретаций шаблона. Концепция была адаптирована и применена по-разному к широкому спектру систем и архитектур».
- ^ Модель – Просмотр – История контроллера . C2.com (11 мая 2012 г.). Проверено 9 декабря 2013.
- ^ Заметки и исторические документы от Трюгве Реенскауг, изобретателя MVC.
- ^ «Заметка о требованиях DynaBook», Trygve Reenskaug, 22 марта 1979 г., SysReq.pdf .
- ^ Краснер, Гленн Э .; Поуп, Стивен Т. (август – сентябрь 1988 г.). «Поваренная книга для использования парадигмы пользовательского интерфейса контроллера модель – представление в Smalltalk-80» . Журнал объектных технологий . Публикации SIGS. 1 (3): 26–49.Также опубликовано как « Описание парадигмы пользовательского интерфейса модель – представление – контроллер в системе Smalltalk-80 » (отчет), ParcPlace Systems; Проверено 5 июня 2012.
- ^ Развитие MVC и других архитектур пользовательского интерфейса от Мартина Фаулера.
- ^ а б Лефф, Авраам; Рэйфилд, Джеймс Т. (сентябрь 2001 г.). Разработка веб-приложений с использованием шаблона проектирования модель / представление / контроллер . Конференция по корпоративным распределенным объектным вычислениям IEEE. С. 118–127.
Библиография [ править ]
В Викиучебнике есть книга по теме: Шаблоны проектирования в информатике / Модель – представление – контроллер. |