Публичные методы или подписаться на просмотр событий - PullRequest
4 голосов
/ 18 июня 2009

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 18 июня 2009

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

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

0 голосов
/ 20 января 2012

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

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