Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отделяем логику приложения от отображения данных, Вопрос по OOD и архитектуре приложения  
:(
    Опции темы
guestl
  Дата 19.12.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.11.2010

Репутация: нет
Всего: нет



Всем привет.

Давно не программировал, а сейчас неспешно пишу для собственных нужд приложение на C#. Столкнулся со своей с плохой дельфийской привычкой разработки - накидать контролов на форму и делать бизнес-логику в событиях контролов. Который, впрочем, описан почти в куче русских книг по C#. К сожалению.

Про MVP, MVC довольно много почитал на MSDN и в интернете, но стоит сесть за клавитуру, нападает ступор.

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

M - Model - класс работающий с базой данных и реализующий эти функции. А что делать, если базы будут меняться? Сегодня с  jet, а завтра с MySQL. Переписывать дикую часть кода? Неправильно. А если класс работает с базой данных и реализует функции приложения, то где делать функции, работающие с конкретной базой? В этом же классе? 
 
V - Это форма, но как ей взаимодействовать с C(P)? Вся роль контролов на форме сведется только к отображению данных, полученных от C(P)?

C(P) - В чем будет роль контроллера(презентатора)? Проверять ввод, давать данные из M в V и вызывать функции записи/чтения в бд из M?

Можно ли где-то увидеть хоть какое-нибудь небольшой приложение, работающее с БД и имеющее четкое деление логики, отображения и работы сбд?

И как ко всему этому прикрутить делегаты, которые на MSDN активно пропагандируются для MVC|MVP? Кого сделать подписчиком событий, а кого отправителем?
PM MAIL   Вверх
guestl
Дата 20.12.2011, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.11.2010

Репутация: нет
Всего: нет



52 просмотра и ни одного ответа. тема слишком сложная, слишком простая и разжевана в faq, форум умер или что-то еще? )
PM MAIL   Вверх
jonie
Дата 22.12.2011, 21:45 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



делай форму, тыкай контолы. 
В контролах вызывай методы Presentor-а (предварительно сделав валидацию на основе например атрибутов Model). Это твоё View.
Presentor возвращает и оперирует только с Model-ными классами.
В модели только данные.


вот неплохая статья с примером который вам нужен http://www.rsdn.ru/article/patterns/ModelViewPresenter.xml


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.