2012-03-04 3 views
1

В MVC модель содержит данные и логику домена, представление отображает информацию пользователю и предлагает виджеты для взаимодействия, такие как кнопки, и контроллер управляет вводом, например, нажатиями кнопок.Куда поместить View State как выбор в MVC?

Но где же находится состояние зрения?

Например, если у вас есть шахматная игра, вы можете отслеживать, какая фигура выбрана и какие поля выделены (вы можете выделить возможные движения).

Я прочитал о модели представления http://martinfowler.com/eaaDev/PresentationModel.html, которая является одним из способов сделать это.

я могу думать о других способов сделать это:

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

Но что такое «нормальный» способ сделать это в mvc (если есть такая вещь, как обычный способ) или каким способом вы используете или рекомендуете?

+0

Аналогичный вопрос задан здесь: http://stackoverflow.com/questions/443910/where-should-i-save-a-complex-mvc-application-ui-state – twaggs

+0

thx для ссылки. Но эта тема очень специфична для Интернета. Я в основном ориентирован на настольные среды, в которых я, например, не используйте сеансы. – Heisenberg

ответ

0

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

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

+0

Согласен, что у представления не должно быть состояния. Но почему выбор принадлежит контроллеру? (Я не говорю, что это плохая идея, но я не знаю, почему она лучше всего подходит). И вы, кажется, предполагаете, что существует модель представления, которая будет более или менее такой же, как модель представления. Как реализуется эта модель представления? Это оболочка вокруг модели домена? – Heisenberg

+0

Не успел записаться здесь некоторое время, но я отредактировал ответ, чтобы ответить на вопросы. – Tobias

+0

Thx за вашу помощь! Еще один вопрос: как вы рекомендуете мне реализовать модель представления? Должен ли я обернуть модель домена и получить методы доступа, которые пересылают данные из модели домена и имеют дополнительные методы для конкретных состояний представления? – Heisenberg