Какова цель «Представления» в шаблоне Model-View-Presenter? - PullRequest
3 голосов
/ 30 августа 2011

Я понимаю общую причину, по которой шаблон Model-View-Presenter - хороший шаблон. Он разделяет заботу о том, что те же части кода, которые предназначены для представления информации пользователю, не беспокоятся о вычислениях и т. Д. Мой вопрос: зачем нам представление, которое по сути ничего не делает? Все, что нужно сделать, это сказать докладчику, чтобы он выполнил работу и получил результат от докладчика. Например, в моих представлениях C # у меня часто просто есть куча обработчиков событий, которые вызывают делегаты, которые реализованы в презентере. Почему бы просто не совместить вид и ведущего? Беспокойство не разделено, потому что представление не имеет никакого отношения.

Ответы [ 2 ]

5 голосов
/ 30 августа 2011

Два важных преимущества

  • Мы можем легко написать несколько представлений или заменить представления (например, WinForms => реализация WPF)

  • Увеличиваемтестируемость путем создания тестовых представлений для модульных тестов

3 голосов
/ 30 августа 2011

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

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

Я не знаю, насколько я с этим согласен и склонен предпочесть MVVM, когда у вас нет Presenters, вместо этого у вас есть ViewModels, которые, как мне кажется, являются лучшим способом определения вышеуказанной абстракции.

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