![]() |
|
Модераторы: Се ля ви |
![]()
|
|
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: нет Всего: 538 |
1. Вид только отображает данные. Сами данные он не хранит, но может хранить вспомогательную информацию (выделенная ячейка, где расположен курсор и т.п.). Он реагирует на события от модели (изменение данных) и на события от контролера (пользовательский ввод). Реагирует он только изменением отображения данных, сам он событий не порождает.
2. Модель хранит данные. Когда данные изменяются, то модель порождает событие изменения данных (данные могут меняться как извне через через методы модели, так и в нижележащем источнике данных, это не принципиально). Модель может быть связана с несколькими видами. 3. Контроллер обрабатывает пользовательский ввод и в зависимости от него дает команды модели изменить данные и виду изменить отображение данных (выделить строку, переместить фокус ввода и т.п.). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: нет Всего: 61 |
ivashkanet, я же грю - это два разнах подхода. Вот, сравни мое описание:
1. Вид отображает данные и выполняет первичную обработку событий (кликанье мышкой, клава, и прочее, все то, что есть в дотнете в базовом классе формы и контролов). После первичной обработки вид должен продуцировать application-specific события. В твоей проге "системным" событием будет parentTable.SelectedRowChanged, а "application-specific" будет событие ParentRowChanged на уровне формы. Вид полностью отвечает за отображение данных и обработку пользовательского ввода. 2. Контроллер (презентер) - это посредник между видом и моделью. Он подписывается на события обоих, и содержит в себе application-specific логику - команды виду обновить свое содержимое (как реакция презентера на событие Вид.ParentRowChanged - выставить Вид.ChildDataSource = DataGateway.GetChildRows(Вид.CurrentParentRow)). 3. Модель - это бизнес и дата слои твоего приложения. Например, DataGateway - один из элементов модели. Возможно, ты путаешься, потому что в дотнете MVC частично реализован: форма - это вид+контроллер. А то, что описываю я - это абстракция более выского уровня, независящая от языка/платформы. С ее помощью можно четко разделить код, управляющий внешним видом (форма, контролы, клики, измененение фокуса, подсвечивание, enable/disable и проч) от логики приложения - обращения к бизнес и дата уровням, обновление информации, etc. Я использовал паттерн MVP для оконных и веб-проектов. А у mr.DUDA, например, отлично получалось с его помощью описывать контрол-дерево файлов. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Значит у LSD это MVC, а у arilou это MVP.
Я так понимаю? Если я построю свое приложение так: 1) View --- отображает данные и обрабатывает только те события, которые не требуют дополнительной информации о других объектах системы. 2) Model --- предоставляет интерфейс к БД и содержит данные которые отображаются во View (готовые 1:1) 3) Controller --- обрабатывает события, которые не смогла обработать View, отправляет запрос на изменение данных (к Model) Все равно какой это будет паттерн (пусть даже IMVC -- ivashkanet-M-V-C) (Этот подход соответствует схеме LSD) Будет ли это нормально? Не нарвусь ли я где-нить на грабли в будущем? |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: нет Всего: 61 |
ivashkanet, кароча пиши код и выкладывай. Тада проще будет обсудить
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
arilou, скажешь тоже.
От того какую выберу политику и будет зависеть код Хотя неструктурированный он есть |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
||||
|
||||
![]()
|
| Правила форума "Системный анализ, проектирование и UML" | |
|
|
Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем: • предпроектные обследования объектов автоматизации; • разработка концепции создания систем; • моделирование бизнес-процессов (в т.ч. на UML); • проектирование архитектуры систем; • управление проектами; • управление качеством; • CASE-средства; • реинжиниринг. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |