Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Отделяем логику приложения от отображения данных |
Автор: guestl 19.12.2011, 19:06 |
Всем привет. Давно не программировал, а сейчас неспешно пишу для собственных нужд приложение на C#. Столкнулся со своей с плохой дельфийской привычкой разработки - накидать контролов на форму и делать бизнес-логику в событиях контролов. Который, впрочем, описан почти в куче русских книг по C#. К сожалению. Про MVP, MVC довольно много почитал на MSDN и в интернете, но стоит сесть за клавитуру, нападает ступор. самый банальный пример: телефонный справочник. в процессе проектирования получается список основных функций: считать номер, записать номер, изменить номер. Контроллер/презентатор должен считанные данные передать отображению и валидированный список передать в модель. M - Model - класс работающий с базой данных и реализующий эти функции. А что делать, если базы будут меняться? Сегодня с jet, а завтра с MySQL. Переписывать дикую часть кода? Неправильно. А если класс работает с базой данных и реализует функции приложения, то где делать функции, работающие с конкретной базой? В этом же классе? V - Это форма, но как ей взаимодействовать с C(P)? Вся роль контролов на форме сведется только к отображению данных, полученных от C(P)? C(P) - В чем будет роль контроллера(презентатора)? Проверять ввод, давать данные из M в V и вызывать функции записи/чтения в бд из M? Можно ли где-то увидеть хоть какое-нибудь небольшой приложение, работающее с БД и имеющее четкое деление логики, отображения и работы сбд? И как ко всему этому прикрутить делегаты, которые на MSDN активно пропагандируются для MVC|MVP? Кого сделать подписчиком событий, а кого отправителем? |
Автор: guestl 20.12.2011, 11:59 |
52 просмотра и ни одного ответа. тема слишком сложная, слишком простая и разжевана в faq, форум умер или что-то еще? ) |
Автор: jonie 22.12.2011, 21:45 |
делай форму, тыкай контолы. В контролах вызывай методы Presentor-а (предварительно сделав валидацию на основе например атрибутов Model). Это твоё View. Presentor возвращает и оперирует только с Model-ными классами. В модели только данные. вот неплохая статья с примером который вам нужен http://www.rsdn.ru/article/patterns/ModelViewPresenter.xml |