2010-06-16 3 views
2

Когда у меня есть кнопка, которая только меняет что-то в моем представлении (например, когда появляется какой-то текст, если я нажимаю ее), могу ли я написать весь код в файле с моим представлением или включить событие обработка этой кнопки в презентаторе? Это проблема для меня, потому что я не знаю, если ведущий обрабатывает все события из представления или только те, которые меняют что-то в модели?mvp design pattern - question

Заранее спасибо

ответ

2

Presenter обрабатывает только те события, которые меняют модель. Однако, каждый программист сам решает, что следует поместить в модель, и что принадлежит целиком.

Представьте себе задачу, в которой вам нужно сделать 2 кнопки. Первая кнопка загружает данные из базы данных и показывает ее, а вторая изменяет кнопку цвет страницы до некоторого случайного значения. Существует два способа ее реализации:

  1. Модель будет иметь LoadedData loadedDataиColor color. Таким образом, Ведущий управлял обеми кнопками.
  2. Можно решить, что цвет является частью части презентации и не имеет ничего общего с моделью. Таким образом, в модели не было бы цвета, и в представлении появится вся случайная генерация цвета и управление кнопками.

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

0

Я думаю, что это зависит от того, как вы чувствовали себя комфортно. Лично я предпочитаю реализацию пассивного представления, но, если бы я понял,как пассивный, так и контрольный контроллер предписывает, чтобы View был обновлен Presenter (кроме простой привязки данных в случае Контролирующего контроллера) , Другим исключением может быть, если ваше представление является веб-формой, и вы хотите обновить его на стороне клиента через javascript.

Вы могли бы посмотреть на следующее:

http://msdn.microsoft.com/en-us/library/ff647543.aspx

, где вы можете найти пункт: Просмотреть обновления

«Когда модель обновляется, вид также должен быть обновлен до отражают изменения. Просмотр обновлений можно обрабатывать несколькими способами. Варианты Model-View-Presenter, Пассивный просмотр и Контроллер контроля, указывают различные подходы к реализации обновлений вида.

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

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

Надеется, что это полезно

Маттео