Как бы вы работали с "MDI-ness" в приложении, которое хочет использовать шаблон MVP? - PullRequest
0 голосов
/ 12 октября 2009

Ситуация: MainForm (назначенный MainPresenter) запущен и работает. Пользователь нажимает кнопку ShowFoo - событие передается в MainPresenter, который, в свою очередь, создает новый FooPresenter и FooView. Как мне действовать сейчас? Где должен быть создан докладчик и где должно быть создано представление и, что наиболее важно, где должно быть установлено свойство MDIParent? (я так думаю, что это должно быть сделано на главном экране.

Примечания. Я использую структуру зависимостей, хотя это не имеет отношения к проблеме. В идеале я бы хотел, чтобы IView не зависел от класса Form.

1 Ответ

1 голос
/ 15 октября 2009

У способа, которым я справлюсь, есть функция интерфейса MainPresenter, которая позволяет мне создавать FooPresenter (а также Foo2Presenter и т. Д.). MainPresenter содержит всю информацию для правильной настройки дочерней формы родителя MDI. Следовательно, почему имеет смысл иметь это там.

Альтернативой является наличие класса AppPresenters, который имеет MainPresenter и FooPresenter в качестве свойств или функций. Здесь AppPresenters содержат классы презентаторов, а также берут на себя ответственность за связывание форм для получения правильного приложения MDI. Следствием этого подхода является тот факт, что приложение является главной / родительской формой с кучей дочерних форм, что не отражается в дизайне ваших интерфейсов.

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

...