Модель - Представление - Презентатор с Виртуальной сеткой

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

Вопрос

Какова наилучшая разбивка ответственности при использовании виртуальной сетки и шаблона MVP в приложении winforms?

включая:

  1. Получение обратных вызовов из сетки при обновлении измененных пользователем ячеек
  2. Обратный вызов из сетки для задания стиля и значения ячейки с учетом строки и столбца
Это было полезно?

Решение

Точные обязанности во многих шаблонах, которые называются Model-View-Presenter, различаются.В основном они различаются в зависимости от того, насколько сильно ведущий контролирует просмотр.Мартин Фаулер подробно обсуждает ряд различных вариантов в своей главе о Архитектуры графического интерфейса пользователя, это стоит того, чтобы прочесть.

Взгляните на Ведущий Первый поскольку в нем достаточно подробно рассматриваются адаптеры и обязанности.

И то, и другое Пассивный Вид и Контролирующий Контроллер на них стоит посмотреть.

модель (или модель предметной области) == логическое представление объектов, участвующих в системе, включая их состояние и поведение.

presenter == прослушивание событий из представления (и, возможно, модели) и обслуживание этих запросов, преобразование типов моделей в типы представлений (пассивный просмотр), это действительно способ скрыть представление и модель друг от друга.Реагирует на стимул от пользователя.

просмотр == презентация:визуальное представление модели, с которой пользователь может взаимодействовать, собирая вводимые пользователем данные

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

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

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

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

Сотрудничество было бы чем-то вроде:

сетка <-- помощник <-- просмотр <--> ведущий

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