3к6с Современные технологии интернет-программирования / 3 Паттерны проектирования MVC, MVP, MVVM
.pdf
View - представление, пользовательский интерфейс.
Model - модель, бизнес-логика.
Controller -
контроллер, содержит логику на изменение модели при определенных действиях.
MVC
11
MVC
Основная идея этого паттерна в том, что и контроллер и представление зависят от модели, но модель никак не зависит от этих двух компонент. Это как раз и позволяет разрабатывать и тестировать модель, ничего не зная о представлении и контроллерах. В идеале контроллер так же ничего не должен знать о представлении, и в идеале для одного представления можно переключать контроллеры, а так же один и тот же контроллер можно
использовать для разных представлений. |
12 |
MVC
Пользователь видит представление и на нем же производит какие-то действия, эти действия
представление перенаправляет контроллеру и подписывается на изменение данных модели,
контроллер в свою очередь производит
определенные действия над моделью данных, представление получает последнее состояние
модели и отображает ее пользователю.
13
MVC
Реализация MVC в качестве GUI-framework:
Cocoa framework;
Java Swing;
Qt4;
GTK+.
Реализация MVC как web-framework:
Java – JSF, Oracle App Framework, Play Framework;
C# – ASP.NET MVC Framework, PureMVC;
|
Ruby – Ruby on Rails. |
14 |
|
|
Пример использования MVC
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;
} |
15 |
Пример использования MVC
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;
} |
16 |
|
}
Пример использования MVC
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;
}
Car.java
17
Пример использования MVC
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;
}
}
18
Пример использования MVC
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;
}
} |
19 |
Пример использования MVC
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>
20
