MVP и IOC в Windows Forms?

Я начал использовать шаблон MVP в приложении форм Windows для нескольких моих форм. Эти формы создают докладчика и передаются обратно докладчику.

Я не использую какие-либо конкретные рамки, и формы по-прежнему могут открывать другие формы.

Должен ли я изменить эту настройку, чтобы докладчики могли открывать другие формы (через представления)? Я полагаю, придется использовать каркас МОК для этого?

Это может избавить меня от использования логики для открытия связанных форм в пользовательском интерфейсе и позволит удалить ссылки на докладчика из формы.

2 ответа

У вас должен быть отдельный класс, который отвечает за создание / управление формами. Я бы порекомендовал использовать шаблон Command для вызова кода, который открывает новую форму. В результате масштабирование будет намного лучше, и вы сможете изменить реализацию Command, чтобы она выполняла разные функции. В моих проектах я просто делаю изменения данных в самой форме, но все, что взаимодействует с "приложением", делегируется объекту Command.

Вам не нужен каркас МОК, чтобы сделать это, но это помогает. Если у вас просто есть простые потребности, вы можете оставить их простыми.

У меня есть пример WinForms MVP на моем сайте здесь: ModelViewPresenter. Я не использую никаких контейнеров IOC, но структурирую код так, чтобы его использование было быстрым прыжком.

Я делаю то же самое с парой проектов winforms, один для работы и один для дома.

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

Другие вопросы по тегам