То, что я делал в прошлом, использует нечто похожее, Model-View-Presenter.
[ПРИМЕЧАНИЕ: эта статья была доступна в Интернете.Чтобы увидеть его сейчас, вам нужно загрузить CHM, а затем просмотреть свойства файла и нажать «Разблокировать». Затем вы можете открыть CHM и найти статью. Спасибо миллион, Microsoft! sigh]
Форма представляет собой вид, и у меня есть интерфейс IView. Вся обработка происходит в презентаторе, который является просто классом. Форма создает нового ведущего и проходит в качестве IView ведущего. Таким образом, для тестирования вы можете перейти в поддельный IView вместо этого, а затем отправить команды ему из ведущего и определить результаты.
Если бы я должен был использовать полноценную Model-View-Controller, я предполагаю, что я хотел бы сделать это следующим образом:
- форма является вид. Он отправляет команды модели, поднимает события, которые контроллер может подписаться, и подписывается на события из модели.
- Контроллер - это класс, который подписывается на события вида и отправляет команды в представление и в модель.
- Модель вызывает события, на которые подписывается вид.
Это будет соответствовать the classic MVC diagram. Самым большим недостатком является то, что с событиями может быть трудно сказать, кто подписывается на что. Шаблон MVP использует методы вместо событий (по крайней мере, так, как я его реализовал). Когда form/view вызывает событие (например, someButton.Click), форма просто вызывает метод для ведущего для запуска логики для него. Вид и модель вообще не имеют прямого соединения; они оба должны пройти презентацию.
Вы можете получить лучший ответ, если вы можете добавить более подробную информацию по своему вопросу. Например, каков ваш модельный компонент? База данных или постоянные файлы или что? Я предполагаю, что часть представления будет простыми формами, но, может быть, вы хотите это сказать? Подробности упрощают обращение к вопросу. – 2008-09-23 17:27:48