События MVP или собственность - PullRequest
1 голос
/ 29 октября 2008

Я использую шаблон MVP в приложении Windows Form. Мне нужно изменить радио кнопку на виде. Я могу сделать это, выставив логическое свойство в представлении, но следует ли мне вместо этого использовать события для управления представлением?

Ответы [ 3 ]

5 голосов
/ 29 октября 2008

Это вопрос чистоты против прагматичности ... и немного личного стиля. Не должно иметь значения ... события - это просто больше работы, чем обычные методы, но они более разделены. Лично

  • Мне нравится, чтобы представления были отделены или не были известны докладчикам, поэтому Представления взаимодействуют с докладчиком, вызывая события . Это устраняет необходимость в представлении иметь ссылку на докладчика. Держите Взгляды тонкими и тупыми.
  • С другой стороны, докладчик обычно имеет ссылку на элемент (и модель). Следовательно, может общаться с представлением, вызывая методы через интерфейс (позволяет заменять представления, если они соответствуют интерфейсу IView). например В вашем случае Set_X_Option (eOptionEnum) будет членом интерфейса IView, который докладчик может затем вызывать соответствующим образом.

Однако вы можете удалить эту зависимость IView (у докладчика есть ссылка на IView, который должен быть создан и подключен), а также использовать события в обоих направлениях ... однако я считаю, что это слишком много работы. Приведенная схема никогда не подводила меня ... пока.

2 голосов
/ 29 октября 2008

Используя анализ «простым языком», я бы сказал, что «отображается или нет радиокнопка - это свойство представления», и, следовательно, используйте фактическое свойство, чтобы сообщить это представлению.

Другая (техническая) возможность состояла бы в том, чтобы иметь событие в Presenter, то есть RadioButtonVisibilityChanged, которое прослушивается представлением и пропускает новую видимость через EventArgs. Это противоречит тому, что View является независимым и неосведомленным о Presenter и, следовательно, подрывает шаблон MVP. Советую против такой ерунды.

1 голос
/ 29 октября 2008

Обычно контроллер меняет представление через свойства и подписывается на события, вызванные представлением, чтобы знать об изменениях. Вот хороший пример MVP , хотя в Asp.NET в основном работает для Windows Forms.

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