Что должен делать контроллер приложений? - PullRequest
10 голосов
/ 23 сентября 2008

Я немного запутался в том, что должен делать контроллер приложения? Потому что я вижу, что функциональность также будет существовать в вашем шаблоне MVP для принятия решения, какую форму следует показывать при нажатии кнопки? Есть ли хорошие примеры для Windows Forms, которые используют шаблон контроллера приложения?

Существует разница в MVC (контроллере) и контроллере приложений. Я знаю MVC (ontroller), я не уверен, какова ответственность за Application Controller и как он вписывается в приложение WinForms. Мартин Фаулер также называет это шаблоном Application Controller, конечно, это не то же самое, что MVC (ontroller)?

Ответы [ 3 ]

12 голосов
/ 28 ноября 2008

Контроллер приложений немного отличается от контроллера, используемого в MVC.

Страница Мартина Фаулера на Прикладном контроллере .

В случае приложения MVP WinForms, которое, как мне кажется, является предметом вопроса. Вы можете поместить всю логику "какую форму я сейчас показываю" в Presenter, но по мере роста вашего приложения вы будете дублировать много кода между Presenters.

Скажем, у вас есть 2 вида, в обоих из которых есть кнопка «Редактировать этот виджет», оба должны иметь логику, чтобы получить WidgetEditorPresenter и показать связанный вид. Если у вас есть ApplicationController, вы перемещаете эту логику в ApplicationController, и теперь у вас просто есть зависимость во всех ваших докладчиках от ApplicationController, и вы можете вызвать appController.EditWidget (), и он отобразит правильное представление.

Контроллер приложений - это uber-контроллер, который контролирует поток приложений во всей вашей системе при переходе от экрана к экрану.

12 голосов
/ 21 апреля 2009

Недавно я написал статью о создании и использовании ApplicationController в проекте C # Winforms, чтобы напрямую отделить рабочий процесс и докладчиков от форм. Это может помочь:

Разделение рабочего процесса и форм с помощью контроллера приложений

редактирование:
На данный момент Archive.org получил более читаемую копию статьи .

0 голосов
/ 23 сентября 2008

Лично у меня нет опыта работы с MVP или winforms, но я работал с MVC. Я надеюсь, что это то, что вы спрашиваете, иначе полностью игнорируйте мой ответ.

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

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

Надеюсь, это поможет,

Ювал = 8 -)

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