Графика
<<  Методическое обеспечение курсового проектирования на кафедрах академии Проектирование БД  >>
Паттерны проектирования MVC, MVP, MVVM
Паттерны проектирования MVC, MVP, MVVM
Обзор
Обзор
Пассивная модель
Пассивная модель
Активная модель MVC
Активная модель MVC
MVC
MVC
Реализация MVC в качестве GUI framework
Реализация MVC в качестве GUI framework
Реализация MVC как web framework
Реализация MVC как web framework
Brand
Brand
Brand
Brand
Car
Car
Car
Car
CarListController
CarListController
CarList
CarList
Отображение страницы
Отображение страницы
Model-view-presenter
Model-view-presenter
Model-view-presenter
Model-view-presenter
Реализации MVP
Реализации MVP
Пример IView
Пример IView
Пример Presenter
Пример Presenter
Пример Presenter
Пример Presenter
Пример View
Пример View
Отличия от MVC
Отличия от MVC
Литература
Литература
Вопросы
Вопросы

Презентация на тему: «Паттерны проектирования MVC, MVP, MVVM». Автор: kirill. Файл: «Паттерны проектирования MVC, MVP, MVVM.ppt». Размер zip-архива: 268 КБ.

Паттерны проектирования MVC, MVP, MVVM

содержание презентации «Паттерны проектирования MVC, MVP, MVVM.ppt»
СлайдТекст
1 Паттерны проектирования MVC, MVP, MVVM

Паттерны проектирования MVC, MVP, MVVM

2 Обзор

Обзор

Cхема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента. Концепция разработана в 1979 году для языка Smalltalk

3 Пассивная модель

Пассивная модель

Passive Model (пассивная модель) - Модель не имеет вообще никаких способов воздействовать на Представление или Контроллер и только используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются Контроллером и он же отвечает за перерисовку Представления, если это необходимо.

4 Активная модель MVC

Активная модель MVC

Active Model (активная модель) - Модель имеет возможность оповестить Представление о том, что в ней произошли некие изменения, и Представление может эти изменения отобразить. Модель просто бросает сообщение, а Представления, которые заинтересованы в оповещении, подписываются на эти сообщения, что позволяет сохранить независимость Модели как от Контроллера так и от Представления, не нарушая тем самым основного свойства паттерна.

5 MVC

MVC

View представление, пользовательский интерфейс, model - модель, бизнес логика controller - контроллер, содержит логику на изменение модели при определенных действиях

6 Реализация MVC в качестве GUI framework

Реализация MVC в качестве GUI framework

Cocoa framework Java Swing Qt4 GTK+

7 Реализация MVC как web framework

Реализация MVC как web framework

Java – JSF, Oracle App Framework, Play Framework C# - ASP.NET MVC Framework, PureMVC Ruby – Ruby on Rails ...

8 Brand

Brand

java

package springmvc.model; public class Brand { private Long id; private String name; private String country; public String getCountry() { return country; } public void setCountry(String country) { this.country = country; }

9 Brand

Brand

java

public void setCountry(String country) { this.country = country; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

10 Car

Car

java

package springmvc.model; import java.math.BigDecimal; public class Car { private Long id; private Brand brand; private String model; private BigDecimal price; public Long getId() { return id; }

11 Car

Car

java

public void setId(Long id) { this.id = id; } public Brand getBrand() { return brand; } public void setBrand(Brand brand) { this.brand = brand; } public String getModel() { return model; } }

12 CarListController

CarListController

java

package springmvc.web; import springmvc.service.CarManager; public class CarListController implements Controller { public ModelAndView handleRequest(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception { CarManager carManager = new CarManager(); ModelAndView modelAndView = new ModelAndView("carList"); modelAndView.addObject("carList", carManager.getCarList()); return modelAndView; } }

13 CarList

CarList

jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <body> <h1>Car List</h1> <c:forEach items="${carList}" var="car"> ${car.brand.name} ${car.model}: ${car.price} <br /> </c:forEach> </body> </html>

14 Отображение страницы

Отображение страницы

15 Model-view-presenter

Model-view-presenter

Разработан в начале 90-х годов в проекте Taligent. Паттерн был перенесен в JAVA Mike Potel. В 2006 году Microsoft начала включать MVP в свои примеры и документацию для программирования UI.

16 Model-view-presenter

Model-view-presenter

Контроллер (Presenter) дает знать представлению об изменениях. Данный подход позволяет создавать абстракцию представления

17 Реализации MVP

Реализации MVP

Google Web Toolkit ASP.NET Web Forms Model-View-Presenter (MVP) Java Swing/AWT Silverlight …

18 Пример IView

Пример IView

public interface IView { /// <summary> /// Вывод градусов Фаренгейта /// </summary> void SetFarenheit(double value); /// Ввод нового значения градусов /// </summary> double InputDegree { get; } /// <summary> /// Событие ввода значения по Фаренгейту /// </summary> event EventHandler<EventArgs> SetFarenheit;

19 Пример Presenter

Пример Presenter

public class Presenter { private Model _model = new Model(); private IView _view; /// <summary> /// В конструтор передается конкретный экземпляр представления /// и происходит подписка на все нужные события. /// <summary> public Presenter(IView view) { _view = view; _view.SetCelsius += new EventHandler<EventArgs>(OnSetCelsius); _view.SetFarenheit += new EventHandler<EventArgs>(OnSetFarenheit); RefreshView(); }

20 Пример Presenter

Пример Presenter

/// <summary> /// Обработка события, установка нового значения градусов по Фаренгейту /// </summary> private void OnSetFarenheit(object sender, EventArgs e) { _model.valueFahrenheit = _view.InputDegree; RefreshView(); } /// <summary> /// Обновление Представления новыми значениями модели. /// По сути Binding (привязка) значений модели к Представлению. /// </summary> private void RefreshView() { _view.SetCelsius(_model.valueCelsius); _view.SetFarenheit(_model.valueFahrenheit); } }

21 Пример View

Пример View

/// <summary> /// Обновление Представления новыми значениями модели. /// По сути Binding (привязка) значений модели к Представлению. /// </summary> private void RefreshView() { _view.SetCelsius(_model.valueCelsius); _view.SetFarenheit(_model.valueFahrenheit); } } /// <summary> /// Ввод нового значения градусов /// </summary> public double InputDegree { get { return Convert.ToDouble(_inputBox.Text); } }

22 Отличия от MVC

Отличия от MVC

Более слабая связь с моделью. Presenter отвечает за связывание модели и представления Более легкая организация тестирования, т.к. взаимодействие с представлением идет через интерфейс

23 Литература

Литература

MVC: XEROX PARC 1978-79 (1979) by Trygve Reenskaug, http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Spring MVC Fast Tutorial http://maestric.com/doc/java/spring/mvc Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. И. Бодягин. Model-View-Presenter и сопутствующие паттерны. http://www.rsdn.ru/article/patterns/ModelViewPresenter.xml

24 Вопросы

Вопросы

Паттерн проектирования MVVM Строение паттерна MVP Особенности MVC

«Паттерны проектирования MVC, MVP, MVVM»
http://900igr.net/prezentacija/cherchenie/patterny-proektirovanija-mvc-mvp-mvvm-177080.html
cсылка на страницу

Графика

7 презентаций о графике
Урок

Черчение

7 тем
Слайды
900igr.net > Презентации по черчению > Графика > Паттерны проектирования MVC, MVP, MVVM