MVC Design - Сколько контроллеров? - PullRequest
2 голосов
/ 11 апреля 2011

Обзор

Я создаю простое веб-приложение, состоящее из холста и элементов на холсте.

Холст поддерживает следующие операции: загрузка, сохранение

Элементы поддерживают следующие операции: перемещение, изменение размера

JavaScript на веб-странице отправляет сообщение на сервер для каждой операции, а сервер отправляет соответствующий ответ.

Мой дизайн

enter image description here

Примечание: стрелка между объектами Canvas и Element должна означать, что объект Canvas содержит список объектов Element.У меня не было правильных символов для диаграммы.

Пример рабочего процесса

  1. Элемент на холсте перемещается, генерируя сообщение element_moved.
  2. Фронт-контроллер управляет сеансом и передает сообщение в контроллер холста с правильным объектом canvas.
  3. Контроллер холста проверяет сообщение и видит, что оно предназначено для элемента на холсте, и передает егона контроллере элемента.
  4. Контроллер элемента анализирует сообщение и напрямую обновляет соответствующий объект элемента.

Вопрос

Этоиерархическое расположение контроллеров - обычное явление в проектах MVC или я полностью упускаю суть?Я искал несколько часов, но не нашел ни одного сайта, на котором более подробно обсуждается дизайн MVC, чем просто возвращение просмотра страницы.

Моя мотивация заключается в том, что каждый объект, с которым клиент должен взаимодействоватьимеет контроллер, так что если интерфейс изменяется (для поддержки новых методов), то соответствующий контроллер может быть обновлен, не затрагивая другие части проекта.

1 Ответ

1 голос
/ 11 апреля 2011

обычно у вас не будет одного контроллера, вызывающего другой в MVC.То, что вы указали как Element Controller, на самом деле является лишь частью бизнес-логики для обновления модели холста.Если в вашем сценарии использования требуется обновить элементы независимо от Canvas, то у вас будет отдельный контроллер элемента, вызывающий бизнес-логику для обновления элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...