MVP, соединяющий триады - PullRequest
       7

MVP, соединяющий триады

0 голосов
/ 16 декабря 2009

У меня есть основная форма с левой и правой панелью. На левой панели отображается список клиентов, и у меня есть кнопка, которую пользователь нажимает, чтобы показать заказы. Когда пользователь нажимает эту кнопку, я хочу показать на правой панели представление деталей заказа, описанное ниже.

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

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

Я хочу, чтобы детали заказа могли получить информацию о выбранном клиенте, чтобы он мог получать заказы для этого клиента.

Как мне это сделать? Агрегатор событий? Композитный Ведущий?

1 Ответ

1 голос
/ 18 декабря 2009

Каждая панель не является отдельным представлением. Делая это, вы привязываете специфику формы к докладчику. Основная идея заключается в том, что при редактировании списка клиентов докладчику не должно быть важно, как настроена форма.

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

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

Хитрость в том, чтобы избежать подобных проблем, это спросить себя, что произойдет, если я создам новую форму, использующую совершенно разные элементы пользовательского интерфейса. Нужно ли менять ведущего, чтобы это отражалось? Если это делает докладчик, то вы слишком тесно связали это с реализацией представления.

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