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

StackOverflow https://stackoverflow.com/questions/1012069

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

    Это было полезно?

    Решение

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

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

    Другие советы

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top