Публичные методы или подписаться на просмотр событий

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

Expose methods of the presenter class for the view to use. (i.e make them public). Have the presenter listen to events raised by the View class.

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

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

Ответы на вопрос(2)

которому я следую здесь, - «Публичные методы в Presenter должны быть без параметров. Просмотр объекта должен иметь доступ только к беспараметрическим методам презентатора. Другой вариант - представление может определять события, на которые может подписаться докладчик. В любом случае не должно быть передачи параметров. & Quot; , Открыт для предложений и комментариев.

Решение Вопроса

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

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

 26 июн. 2009 г., 12:40
Согласен! Мы изменили вариант 1 (с вызовом представления в докладчик) после долгого использования варианта 2 в проекте. Меньше сложности и меньше работы.
 16 янв. 2012 г., 07:12
Не могли бы вы ответитьstackoverflow.com/questions/8851933/… ?

Ваш ответ на вопрос