Иерархическая модель – представление – контроллер ( HMVC ) - это программный архитектурный паттерн , разновидность модели – представления – контроллера (MVC), подобный представлению – абстракции – управлению (PAC), который был опубликован в 2000 году в статье [1] в JavaWorld. Журнал, авторы которого, видимо, не знали [2] о PAC, который был опубликован 13 годами ранее.
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/4/4a/Pac-schema.png/400px-Pac-schema.png)
Контроллер имеет некоторый надзор в том, что он сначала выбирает модель, а затем представление, реализуя механизм утверждения контроллером. Модель предотвращает прямой доступ представления к источнику данных.
Пример
Самым большим практическим преимуществом использования архитектуры HMVC является «виджетизация» структур контента. [3] Примером могут быть комментарии, рейтинги, отображение RSS-канала Twitter или блога или отображение содержимого корзины покупок для веб-сайта электронной коммерции. По сути, это часть контента, которую необходимо отображать на нескольких страницах и, возможно, даже в разных местах, в зависимости от контекста основного HTTP-запроса.
Традиционные фреймворки MVC обычно не дают прямого ответа для этих типов структур контента, поэтому программисты часто в конечном итоге дублируют и переключают макеты, используют настраиваемые помощники, создают свои собственные структуры виджетов или файлы библиотеки или извлекают несвязанные данные из основного запрошенного контроллера. для перехода к просмотру и частичного рендеринга. Обратной стороной является то, что ответственность за рендеринг определенного фрагмента контента или загрузку требуемых данных проникает в несколько областей и дублируется в соответствующих местах.
HMVC, или, в частности, возможность отправлять подзапросы Контроллеру для выполнения этих обязанностей, направлена на решение этой проблемы. Структура имитирует структуру традиционного MVC. Например, если нужно загрузить некоторые данные о комментариях и отобразить их в формате HTML, нужно отправить запрос в Контроллер комментариев с некоторыми параметрами. Затем запрос взаимодействует с моделью, выбирает представление, в котором отображается контент. Отличие от традиционного MVC заключается в том, что комментарии отображаются не на отдельной странице, а в строке под статьей, которую просматривает пользователь. В этом отношении HMVC стремится повысить модульность кода , облегчить повторное использование и обеспечить лучшее разделение проблем.
Смотрите также
Рекомендации
- ^ Кай, Джейсон; Капила, Ранджит; Пал, Гаурав (21 июля 2000 г.). «HMVC: многоуровневый шаблон для разработки сильных клиентских уровней» . JavaWorld . Проверено 18 июля 2020 .
- ^ «ТП» (8 сентября 2000 г.). "Является ли HMVC PAC?" . Письма в редакцию. JavaWorld . Архивировано из оригинала на 2006-03-19.
- ^ Вэнс Лукас (апрель 2011 г.). "почему паттерн HMVC?" . StackOverflow . Проверено 15 октября 2013 .