2009-06-18 2 views
4

Я написал проект MVP, где View представляет собой WinForm, который реализует мой интерфейс IView. Я сейчас просматриваю код, улучшая его, где могу, и хотел бы рассказать вам о том, как взаимодействуют зрители и ведущие. На ваш взгляд, какая из следующих рекомендаций?Публичные методы или подписаться на Просмотр событий

  1. Вывести методы класса презентатора для просмотра. (т. е. сделать их общедоступными).
  2. Попросите ведущего прослушать события, поднятые классом View.

Например, мой MVP использует службу, которая связывается через последовательный порт. Для подключения к удаленному устройству мой взгляд вызывает общедоступный метод Presenter Connect(), который затем вызывает соответствующие методы обслуживания.

Было бы лучше, если бы поднять событие Connect() и послушать его?

ответ

6

Обычно я работаю так, что представление зависит от ведущего, а ведущий зависит от модели. Это означает, что одна и та же модель может использоваться несколькими докладчиками, а один и тот же ведущий может использовать мои множественные представления (разные макеты пользовательского интерфейса, или Winforms vs Web и т. Д.). Чтобы облегчить это, представление вызывает публичные методы на презентаторе и прислушивается к событиям от ведущего, чтобы сказать, когда данные были изменены.

Для примера, почему вы можете работать таким образом, представьте себе интерфейс, который имеет два вида для пользователя-новичка и один для эксперта, с представлением beginner, показывающим подмножество команд эксперта. Если один и тот же презентатор используется для обоих этих представлений, то представление beginner должно будет выставлять события для всех команд эксперта, поскольку ведущий нуждается в них, чтобы они могли привязываться к ним, даже если они никогда не будут запущены. С другой стороны, ведущий может выставлять методы для всех экспертных опций, а представление beginner их никогда не вызывает, это означает, что ни представление, ни ведущий не реализуют неиспользуемые функции.

+0

Согласен! Мы изменили на вариант 1 (имея вызов вызова в презентаторе) после долгого использования проекта в проекте. Меньшая сложность и меньше работы. –

+0

Не могли бы вы ответить на http://stackoverflow.com/questions/8851933/event-bubbling-and-mvp-asp-net? – Lijo

0

Руководящий принцип, который я хотел бы получить здесь, - «Публичные методы в презентаторе должны быть без параметров. Объект просмотра должен иметь доступ только к беспринципным методам презентатора. Другой вариант - представление может определять события, на которые может подписаться ведущий. не передавать параметры ». , Открыт для комментариев и комментариев.

Смежные вопросы