Silverlight/WPF: возврат от паттерна MVVM к MVP<br />Гладких Денис<br />http://outcoldman.ru<br />
История<br />Первое упоминание паттерна MVC в Smalltalk’80<br />Задача: архитектурное решение, которое позволяло бы манипу...
Термины<br />Model(модель данных) - бизнес логика вашего приложения;<br />View(представление) – пользовательский интерфейс...
Классический MVC<br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Сообщение<br />об изменениях<b...
Реализация<br />UserEditView<br />UserEditController<br />Model (User,Repository)<br />Пользователь <br />нажал Apply<br /...
Model – View – Presenter <br />Действия <br />пользователя<br />Passive View<br />Supervising Controller<br />View<br />Пе...
Реализация<br />IUserEditView<br />UserEditView<br />UserEditPresenter<br />Model (User,Repository)<br />
Реализация<br />Model (User,Repository)<br />UserEditView<br />UserEditPresenter<br />Пользователь <br />нажал Apply<br />...
INotifyPropertyChanged<br />INotifyCollectionChanged<br />DependencyObject<br />Silverlight/WPF Binding<br />МАГИЯ<br />Vi...
Model – View – Presenter <br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Обновление<br />Измен...
Model – View – ViewModel<br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Обновление<br />Измене...
Реализация<br />Магия<br />Model (User,Repository)<br />UserEditView<br />UserEditViewModel<br />Пользователь <br />нажал ...
View<br />ViewModel<br />Задачи (View / ViewModel)<br />Установка значений в соответствующие контролы<br />Связь/взаимодей...
BindingModel<br />View<br />BindingModel   .       .       .<br />Создание данных (из Модели) для отображения<br />Валидац...
Demo (by Davy Brion)<br />
Silverlight/WPF: возврат от паттерна MVVM к MVPГладких Денис (outcoldman)<br />http://outcoldman.ru<br />http://twitter.co...
Upcoming SlideShare
Loading in …5
×

Add2010 - Silverlight/WPF: MVP&MVVM

1,861
-1

Published on

Presentation from Application Developers Days 2010

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,861
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Add2010 - Silverlight/WPF: MVP&MVVM

  1. 1. Silverlight/WPF: возврат от паттерна MVVM к MVP<br />Гладких Денис<br />http://outcoldman.ru<br />
  2. 2. История<br />Первое упоминание паттерна MVC в Smalltalk’80<br />Задача: архитектурное решение, которое позволяло бы манипулировать графическими представлениями данных приложения таким образом, чтобы изменение Представления этих данных не влияло на бизнес-логику и данные (Модель) приложения, а так же, чтобы была возможность иметь несколько Представлений для одной Модели. <br />
  3. 3. Термины<br />Model(модель данных) - бизнес логика вашего приложения;<br />View(представление) – пользовательский интерфейс;<br />Controller(контроллер) - содержит логику на изменение модели при определенных действиях пользователя;<br />
  4. 4. Классический MVC<br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Сообщение<br />об изменениях<br />Изменение<br />модели<br />Model<br />Controller<br />
  5. 5. Реализация<br />UserEditView<br />UserEditController<br />Model (User,Repository)<br />Пользователь <br />нажал Apply<br />controller.UpdateUser(<br />textBoxName.Text,<br />…<br />)<br />user.Name = name;<br />repository.Save(user);<br />Сообщить об изменении <br />(INotifyPropertyChanged)<br />
  6. 6. Model – View – Presenter <br />Действия <br />пользователя<br />Passive View<br />Supervising Controller<br />View<br />Передача <br />вызова<br />Обновление<br />Изменение<br />модели<br />Presenter<br />Model<br />Сообщение<br />об изменениях<br />
  7. 7. Реализация<br />IUserEditView<br />UserEditView<br />UserEditPresenter<br />Model (User,Repository)<br />
  8. 8. Реализация<br />Model (User,Repository)<br />UserEditView<br />UserEditPresenter<br />Пользователь <br />нажал Apply<br />presenter.UpdateUser();<br />name = view.UserName;<br />user.Name = name;<br />repository.Save(user);<br />view.UserName= user.Name;<br />
  9. 9. INotifyPropertyChanged<br />INotifyCollectionChanged<br />DependencyObject<br />Silverlight/WPF Binding<br />МАГИЯ<br />View<br />Controller<br />TextBox<br />UserName<br />Button<br />Command<br />
  10. 10. Model – View – Presenter <br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Обновление<br />Изменение<br />модели<br />Presenter<br />Model<br />Сообщение<br />об изменениях<br />
  11. 11. Model – View – ViewModel<br />Действия <br />пользователя<br />View<br />Передача <br />вызова<br />Обновление<br />Изменение<br />модели<br />ViewModel<br />Model<br />Сообщение<br />об изменениях<br />
  12. 12. Реализация<br />Магия<br />Model (User,Repository)<br />UserEditView<br />UserEditViewModel<br />Пользователь <br />нажал Apply<br />ExecuteSaveCommand()<br />name = UserName;<br />user.Name = name;<br />repository.Save(user);<br />TextBoxполучит актуальное <br />значение<br />
  13. 13. View<br />ViewModel<br />Задачи (View / ViewModel)<br />Установка значений в соответствующие контролы<br />Связь/взаимодействие с моделью<br />Валидация измененных / новых данных<br />Создание данных (из Модели) для отображения<br />Визуализация контролов<br />
  14. 14. BindingModel<br />View<br />BindingModel . . .<br />Создание данных (из Модели) для отображения<br />Валидация измененных / новых данных<br />ViewModel . .<br />Связь/взаимодействие с моделью<br />Presenter<br />
  15. 15. Demo (by Davy Brion)<br />
  16. 16. Silverlight/WPF: возврат от паттерна MVVM к MVPГладких Денис (outcoldman)<br />http://outcoldman.ru<br />http://twitter.com/outcoldman<br />outcoldman@gmail.com<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×