логика пассивного просмотра и отображения - PullRequest
1 голос
/ 19 апреля 2010

В MVC и MVP и аналогичных шаблонах часто используется подход «пассивного представления», который настолько глуп, насколько возможно (содержит как можно меньше логики). Это должно облегчить модульное тестирование и создать более четкое разделение вида и модели.

Я знаю, что эти паттерны бывают очень разными, и, особенно, понимание MVP, кажется, отличается от статьи к статье. Поэтому мой вопрос не в том, «как правильно реализовать этот шаблон».

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

Таким образом, мой вопрос заключается в том, куда поместить связанную с отображением логику пассивного представления и какую функциональность можно смешать в Presenter.

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2010

Я бы поместил логику полосы прокрутки в презентатор, если ему нужно получить больше данных из модели, когда пользователь прокручивает. Даже если это не так, представление должно уведомить докладчика.

Иногда графический интерфейс API обрабатывает прокрутку сам по себе. Если это так, то все, что вы можете сделать, это уведомить окурка в докладчике (который ничего не делает). Представление не имеет представления о том, что важно для докладчика.

Ведущий не обязательно должен быть единственным монолитным классом. Желательно, чтобы вы объединяли разные объекты для разных обязанностей. Это на самом деле хорошо с точки зрения тестирования, где вы можете смоделировать все объекты, которые вы в данный момент не тестируете.

...