Mvc, mvp and mvvm: A comparison of architectural patterns

Ivan Dyachenko
Ivan DyachenkoPrincipal, Software Consultant à AT&PI
MVC, MVP and MVVM: A Comparison of Architectural
Patterns
Dyachenko Ivan, Ignite
Что такое Model/View/(C or VM or P)
● Шаблоны, которые описывают модульный подход к
разработке приложений
● Модули включают:
○ Model - данные
○ View - слой представления (Presentation Layer)
○ C or VM or P - чистая логика
● Они основаны на принципе "разделения
обязанностей"
Why Model-View-(C or VM or P)
Основные преимущества MVC шаблонов в
том, что они увеличивают:
● Модульность
● Гибкость
● Тестируемость
● Поддерживаемость
Mvc, mvp and mvvm: A comparison of architectural patterns
Model-View-Controller (MVC)
Концепция MVC была описана в 1979 году Трюгве Реенскауг (англ. Trygve
Reenskaug) тогда работающим над языком программирования Smalltalk в
Xerox PARC.
Smalltalk MVC
Оригинальная концепция
В оригинальной концепции была описана сама идея и роль каждого из
элементов: модели, представления и контроллера.
Но связи между ними были описаны без конкретизации.
Назначение
Разделение бизнес-логики (модели) от её визуализации (представления,
вида)
● К одной модели можно присоединить несколько видов, при этом не
затрагивая реализацию модели.
● Не затрагивая реализацию видов, можно изменить реакции на
действия пользователя (нажатие мышью на кнопке, ввод данных), для
этого достаточно использовать другойконтроллер.
● Ряд разработчиков специализируется только в одной из областей
Концепция
● Модель (англ. Model). Модель предоставляет знания: данные и
методы работы с этими данными, реагирует на запросы, изменяя своё
состояние. Не содержит информации, как эти знания можно
визуализировать.
● Представление, вид (англ. View). Отвечает за отображение
информации (визуализацию). Часто в качестве представления
выступает форма (окно) с графическими элементами.
● Контроллер (англ. Controller). Обеспечивает связь между
пользователем и системой: контролирует ввод данных пользователем
и использует модель и представление для реализации необходимой
реакции.
Две основные модификации
Пассивная модель — модель не имеет никаких способов воздействовать
на представление или контроллер, и используется ими в качестве
источника данных для отображения
Активная модель — модель оповещает представление о том, что в ней
произошли изменения, а представления, которые заинтересованы в
оповещении, подписываются на эти сообщения. Это позволяет сохранить
независимость модели как от контроллера, так и от представления.
Mvc, mvp and mvvm: A comparison of architectural patterns
Пассивная модель
Активная модель
Классическая реализация
Классической реализацией концепции MVC принято
считать версию именно с активной моделью
Mvc, mvp and mvvm: A comparison of architectural patterns
Client/Server (DNA) vs MVC
Client/Server (DNA) vs MVC
MVC Observer Pattern
Model-View-Presenter
Шаблон Model-View-Presenter возник в начале 1990-х в Taligent
Шаблон проектирования, производный от MVC, который используется в
основном для построенияпользовательского интерфейса.
В MVP Presenter берет на себя функциональность посредника (играя
роль, аналогичную контроллеру в MVC). Кроме того, Presenter отвечает за
управление событиями пользовательского интерфейса (например,
mouseDown, keyDown и т.д.), которое обычно было заботой контроллера.
Model-View-Presenter
MVP является производным MVC
• Два типа реализации
• Passive View
• Supervising Controller
• Presenter предполагает функциональность MVC Controller
• View отвечает за обработку событий пользовательского интерфейса
• Model становится строго модели предметной области
• Больше ориентированный на пользовательский интерфейс
Model-View-Presenter
Model-View-Presenter
Пассивный вид (Passive View)
В этом случае вид ничего не знает о модели, а только имеет простые
свойства, для отображения данных. Представитель считывает
информацию из модели и обновляет свойства вида.
Требует больше усилий (кода), но связность становится еще меньше.
Наблюдающий контроллер (Supervising
Controller)
Здесь вид знает про модель и является ответственным за привязку
данных (датабиндинг) модели к виду.
Контроллер же содержит в себе всю логику работы. Это немного
упрощает жизнь, но увеличивает связность.
MVP Passive View/Supervising
Controller
MVC vs. MVP
Presentation Model (PM)
Модель представления – это логическое представлении UI без
привязки к элементам графического интерфейса.
1) Содержит логику UI:
Например, при нажатии на кнопку, модель представления уведомляется об
этом и производит соответствующие действия.
2) Отображает данные модели:
Производит необходимую конвертацию и форматирование данных модели
для правильного отображения пользователю.
3) Хранит состояние UI:
Хранения текущего выбранного элемента списка, ошибок валидации и
прочее.
Представление (вид) (View) имеет доступ к данным, хранящимся в модели
представления для дальнейших манипуляций (отображение).
Преимуществом такого подхода также является то, что вы можете создавать
тесты для вашего UI без привязки к элементам граф. интерфейса.
Model-View-ViewModel (MVVM)
Значительной степени основан на MVC
• Специализация шаблона MVP известна как Presentation Model
• Встроенный специально для WPF и Silverlight сред
• Model и View такие же как MVC
• ViewModel is a “Model of the View”
• It extends the Model with Behaviors the View could use
• Data Binding between View and Model
• Passes commands between the View and Model
Model-View-ViewModel (MVVM)
ViewModel не общается напрямую с View. Вместо ViewModel
предоставляет свойства, которые могут легко быть привязаны
(прибиндены). View, в свою очередь, использует эти свойства и команды
(Commands) для отображения данных и извлечения их из ViewModel.
Также необязательно, чтоб View знал о ViewModel.
XAML (язык разметки) позволяет декларативно, путем отражения
(Reflection) привязать свойства ViewModel к соответствующим элементам
View. Благодаря тому, что ViewModel предоставляет доступ через
свойства к данным, уже готовым к употреблению (отформатированным и
тд), то View – очень простое и не содержит никакой логики.
Model-View-ViewModel (MVVM)
Model-View-ViewModel (MVVM)
Mvc, mvp and mvvm: A comparison of architectural patterns
Иерархия MVC шаблонов
1 sur 34

Recommandé

Паттерны проектирования par
Паттерны проектированияПаттерны проектирования
Паттерны проектированияITCP Community
131 vues26 diapositives
MVC par
MVCMVC
MVCБахрам Ходжаев
269 vues4 diapositives
Joomla (Админка) www.hotwebstudio.ru par
Joomla (Админка) www.hotwebstudio.ruJoomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruhotwebstudio.ru
520 vues6 diapositives
ASP.NET MVC: new era? par
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?Alexander Konduforov
1.6K vues20 diapositives
Антон Валюх - Использование паттерна Mvvm в android par
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
2.4K vues37 diapositives
Стандарты и соглашения в сложных ООП-приложениях par
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложенияхMagecom Ukraine
539 vues32 diapositives

Contenu connexe

Tendances

Архитектура для автоматизированного тестирования UI par
Архитектура для автоматизированного тестирования UIАрхитектура для автоматизированного тестирования UI
Архитектура для автоматизированного тестирования UIAnton Bevzuk
729 vues34 diapositives
C++ осень 2012 лекция 8 par
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8Technopark
627 vues72 diapositives
Принципы SOLID par
Принципы SOLIDПринципы SOLID
Принципы SOLIDUnguryan Vitaliy
3.7K vues41 diapositives
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS par
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSГлеб Тарасов
924 vues47 diapositives
5 Тема par
5 Тема5 Тема
5 ТемаAlexandrLArhipov
535 vues64 diapositives
МАПО Лекция 22 Проект par
МАПО Лекция 22 ПроектМАПО Лекция 22 Проект
МАПО Лекция 22 ПроектОлег Гудаев
1.8K vues21 diapositives

Tendances(14)

Архитектура для автоматизированного тестирования UI par Anton Bevzuk
Архитектура для автоматизированного тестирования UIАрхитектура для автоматизированного тестирования UI
Архитектура для автоматизированного тестирования UI
Anton Bevzuk729 vues
C++ осень 2012 лекция 8 par Technopark
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8
Technopark627 vues
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS par Глеб Тарасов
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
ПартФорум DIRECTUM 2013 - разработка прикладных решений par Виктор Золотов
ПартФорум DIRECTUM 2013 - разработка прикладных решенийПартФорум DIRECTUM 2013 - разработка прикладных решений
ПартФорум DIRECTUM 2013 - разработка прикладных решений
Разработка пользовательских элементов управления в WPF par CUSTIS
Разработка пользовательских элементов управления в WPFРазработка пользовательских элементов управления в WPF
Разработка пользовательских элементов управления в WPF
CUSTIS10.7K vues
Visual Paradigm par anddriga
Visual ParadigmVisual Paradigm
Visual Paradigm
anddriga1.3K vues
Практический анализ и визуальное моделирование на UML par Nikolai Kireev
Практический анализ и визуальное моделирование на UMLПрактический анализ и визуальное моделирование на UML
Практический анализ и визуальное моделирование на UML
Nikolai Kireev17.6K vues

En vedette

Как писать красивый код или основы SOLID par
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDPavel Tsukanov
5.3K vues23 diapositives
Принципы проектирования S.O.L.I.D par
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DAndreyGeonya
16.9K vues29 diapositives
Viper - чистая архитектура iOS-приложения (И. Чирков) par
Viper - чистая архитектура iOS-приложения (И. Чирков)Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)65apps
4.7K vues48 diapositives
Как мы переходили на sails.js par
Как мы переходили на sails.jsКак мы переходили на sails.js
Как мы переходили на sails.jsIgor Antonov
880 vues19 diapositives
Технология MVC в высоконагруженных проектах par
Технология MVC в высоконагруженных проектахТехнология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектахMedia Gorod
754 vues11 diapositives
Mystery Shopping For Competitive Analysis Slidecast (In Russian) par
Mystery Shopping For Competitive Analysis Slidecast (In Russian)Mystery Shopping For Competitive Analysis Slidecast (In Russian)
Mystery Shopping For Competitive Analysis Slidecast (In Russian)Evgeniy Simakhin
805 vues12 diapositives

En vedette(11)

Как писать красивый код или основы SOLID par Pavel Tsukanov
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLID
Pavel Tsukanov5.3K vues
Принципы проектирования S.O.L.I.D par AndreyGeonya
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.D
AndreyGeonya16.9K vues
Viper - чистая архитектура iOS-приложения (И. Чирков) par 65apps
Viper - чистая архитектура iOS-приложения (И. Чирков)Viper - чистая архитектура iOS-приложения (И. Чирков)
Viper - чистая архитектура iOS-приложения (И. Чирков)
65apps4.7K vues
Как мы переходили на sails.js par Igor Antonov
Как мы переходили на sails.jsКак мы переходили на sails.js
Как мы переходили на sails.js
Igor Antonov880 vues
Технология MVC в высоконагруженных проектах par Media Gorod
Технология MVC в высоконагруженных проектахТехнология MVC в высоконагруженных проектах
Технология MVC в высоконагруженных проектах
Media Gorod754 vues
Mystery Shopping For Competitive Analysis Slidecast (In Russian) par Evgeniy Simakhin
Mystery Shopping For Competitive Analysis Slidecast (In Russian)Mystery Shopping For Competitive Analysis Slidecast (In Russian)
Mystery Shopping For Competitive Analysis Slidecast (In Russian)
Evgeniy Simakhin805 vues
Тимур Лукин - Архитектура и проектирование ПО par Yandex
Тимур Лукин - Архитектура и проектирование ПОТимур Лукин - Архитектура и проектирование ПО
Тимур Лукин - Архитектура и проектирование ПО
Yandex1.1K vues
Servqual model par rockpulkit
Servqual modelServqual model
Servqual model
rockpulkit214.5K vues

Similaire à Mvc, mvp and mvvm: A comparison of architectural patterns

Архитектурный шаблон MVC par
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
4K vues7 diapositives
Backbone lesson 1 par
Backbone lesson 1Backbone lesson 1
Backbone lesson 1Mihail Skida
1.4K vues13 diapositives
Шаблоны проектирования в Magento par
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в MagentoPavel Usachev
2.3K vues25 diapositives
django.pdf par
django.pdfdjango.pdf
django.pdfAntonPolovnikov1
5 vues8 diapositives
Django par
DjangoDjango
DjangoPolinaPolovnikova
20 vues8 diapositives
C# Web. Занятие 09. par
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
1.6K vues60 diapositives

Similaire à Mvc, mvp and mvvm: A comparison of architectural patterns(20)

Шаблоны проектирования в Magento par Pavel Usachev
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
Pavel Usachev2.3K vues
C# Web. Занятие 09. par Igor Shkulipa
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
Igor Shkulipa1.6K vues
Как пройти собеседование и получить первую работу на Swift par Anton Loginov
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
Anton Loginov2.1K vues
Moxy. Из чего состоит и как этим пользоваться par Yuri Shmakov
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
Yuri Shmakov5.2K vues
ASP.NET, MVC, ASP.NET MVC par GetDev.NET
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET2.6K vues
чмв лекция №5 par student_kai
чмв   лекция №5чмв   лекция №5
чмв лекция №5
student_kai747 vues
Как выбрать для проекта практики проектирования и работы с требованиями par SQALab
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
SQALab848 vues
Choose method for requirements Tsepkov Analyst Days-2017 par Maxim Tsepkov
Choose method for requirements Tsepkov Analyst Days-2017Choose method for requirements Tsepkov Analyst Days-2017
Choose method for requirements Tsepkov Analyst Days-2017
Maxim Tsepkov215 vues
Как выбрать для проекта практики проектирования и работы с требованиями par CUSTIS
Как выбрать для проекта практики проектирования и работы с требованиямиКак выбрать для проекта практики проектирования и работы с требованиями
Как выбрать для проекта практики проектирования и работы с требованиями
CUSTIS725 vues
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers par Глеб Тарасов
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
iOS-02-Паттерны ООП par Noveo
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООП
Noveo618 vues
The MVC Renaissance | Возрождение MVC par Bulat Khabirov
The MVC Renaissance | Возрождение MVCThe MVC Renaissance | Возрождение MVC
The MVC Renaissance | Возрождение MVC
Bulat Khabirov552 vues

Mvc, mvp and mvvm: A comparison of architectural patterns

  • 1. MVC, MVP and MVVM: A Comparison of Architectural Patterns Dyachenko Ivan, Ignite
  • 2. Что такое Model/View/(C or VM or P) ● Шаблоны, которые описывают модульный подход к разработке приложений ● Модули включают: ○ Model - данные ○ View - слой представления (Presentation Layer) ○ C or VM or P - чистая логика ● Они основаны на принципе "разделения обязанностей"
  • 3. Why Model-View-(C or VM or P) Основные преимущества MVC шаблонов в том, что они увеличивают: ● Модульность ● Гибкость ● Тестируемость ● Поддерживаемость
  • 5. Model-View-Controller (MVC) Концепция MVC была описана в 1979 году Трюгве Реенскауг (англ. Trygve Reenskaug) тогда работающим над языком программирования Smalltalk в Xerox PARC.
  • 7. Оригинальная концепция В оригинальной концепции была описана сама идея и роль каждого из элементов: модели, представления и контроллера. Но связи между ними были описаны без конкретизации.
  • 8. Назначение Разделение бизнес-логики (модели) от её визуализации (представления, вида) ● К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. ● Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных), для этого достаточно использовать другойконтроллер. ● Ряд разработчиков специализируется только в одной из областей
  • 9. Концепция ● Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. ● Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. ● Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.
  • 10. Две основные модификации Пассивная модель — модель не имеет никаких способов воздействовать на представление или контроллер, и используется ими в качестве источника данных для отображения Активная модель — модель оповещает представление о том, что в ней произошли изменения, а представления, которые заинтересованы в оповещении, подписываются на эти сообщения. Это позволяет сохранить независимость модели как от контроллера, так и от представления.
  • 14. Классическая реализация Классической реализацией концепции MVC принято считать версию именно с активной моделью
  • 19. Model-View-Presenter Шаблон Model-View-Presenter возник в начале 1990-х в Taligent Шаблон проектирования, производный от MVC, который используется в основном для построенияпользовательского интерфейса. В MVP Presenter берет на себя функциональность посредника (играя роль, аналогичную контроллеру в MVC). Кроме того, Presenter отвечает за управление событиями пользовательского интерфейса (например, mouseDown, keyDown и т.д.), которое обычно было заботой контроллера.
  • 20. Model-View-Presenter MVP является производным MVC • Два типа реализации • Passive View • Supervising Controller • Presenter предполагает функциональность MVC Controller • View отвечает за обработку событий пользовательского интерфейса • Model становится строго модели предметной области • Больше ориентированный на пользовательский интерфейс
  • 23. Пассивный вид (Passive View) В этом случае вид ничего не знает о модели, а только имеет простые свойства, для отображения данных. Представитель считывает информацию из модели и обновляет свойства вида. Требует больше усилий (кода), но связность становится еще меньше.
  • 24. Наблюдающий контроллер (Supervising Controller) Здесь вид знает про модель и является ответственным за привязку данных (датабиндинг) модели к виду. Контроллер же содержит в себе всю логику работы. Это немного упрощает жизнь, но увеличивает связность.
  • 27. Presentation Model (PM) Модель представления – это логическое представлении UI без привязки к элементам графического интерфейса.
  • 28. 1) Содержит логику UI: Например, при нажатии на кнопку, модель представления уведомляется об этом и производит соответствующие действия. 2) Отображает данные модели: Производит необходимую конвертацию и форматирование данных модели для правильного отображения пользователю. 3) Хранит состояние UI: Хранения текущего выбранного элемента списка, ошибок валидации и прочее. Представление (вид) (View) имеет доступ к данным, хранящимся в модели представления для дальнейших манипуляций (отображение). Преимуществом такого подхода также является то, что вы можете создавать тесты для вашего UI без привязки к элементам граф. интерфейса.
  • 29. Model-View-ViewModel (MVVM) Значительной степени основан на MVC • Специализация шаблона MVP известна как Presentation Model • Встроенный специально для WPF и Silverlight сред • Model и View такие же как MVC • ViewModel is a “Model of the View” • It extends the Model with Behaviors the View could use • Data Binding between View and Model • Passes commands between the View and Model
  • 30. Model-View-ViewModel (MVVM) ViewModel не общается напрямую с View. Вместо ViewModel предоставляет свойства, которые могут легко быть привязаны (прибиндены). View, в свою очередь, использует эти свойства и команды (Commands) для отображения данных и извлечения их из ViewModel. Также необязательно, чтоб View знал о ViewModel. XAML (язык разметки) позволяет декларативно, путем отражения (Reflection) привязать свойства ViewModel к соответствующим элементам View. Благодаря тому, что ViewModel предоставляет доступ через свойства к данным, уже готовым к употреблению (отформатированным и тд), то View – очень простое и не содержит никакой логики.