Содержание
- 2. План Что такое шаблон проектирования? История появления Преимущества и критика Классификация шаблонов проектирования Примеры некоторых шаблонов
- 3. Что такое шаблон проектирования? В процессе написания программ (как и в любой другой области) часто возникают
- 4. Что такое шаблон проектирования? Шаблон проектирования (англ. design pattern) – многократно используемое решение распространённых задач при
- 5. История появления Шаблоны проектирования впервые появились в строительной архитектуре. Человечество на сегодняшний день: 5000 лет опыта
- 6. История появления Кристофер Александер – архитектор и филосов. Две книги: “A Pattern Labguage: Towns, Buildings, Constructions”
- 7. Преимущества Стандартный шаблон можно хорошо проработать В программах, где он используется, будет меньше кода, потенциально содержащего
- 8. Критика Зацикливание на шаблонах порождает привычку пользоваться стандартными вещами и отучает нас придумывать нестандартные решения Шаблоны
- 9. Классификация шаблонов Основные Порождающие Структурные Поведенческие Разделяющие Архитектурные Анти-паттерны И другие © Belarus Open Source Laboratory,
- 10. Классификация шаблонов Основные Фундаментальные, используются другими шаблонами Delegation, interface, abstract superclass, interface and abstract class, immutable,
- 11. Классификация шаблонов Структурные Описывают, как их классов и объектов собираются более крупные структуры Adapter, iterator, bridge,
- 12. Классификация шаблонов Разделяющие Описывают, как их классов и объектов собираются более крупные структуры Filter, composite, read
- 13. Singleton (одиночка) Гарантирует, что у класса есть только один экземпляр и предоставляет к нему глобальную точку
- 14. Singleton (одиночка) © Belarus Open Source Laboratory, TechDay Докладчик: Константин Слисенко, JazzTeam public class Singleton {
- 15. Singleton (одиночка) Цели использования Централизованное управление ресурсом Доступ из любой точки программы Создание объекта требует больших
- 16. Builder (Строитель) Делает процесс создания сложного объекта независимым от того, как конструируются сами части и как
- 17. Builder (Строитель) class Pizza { private String dough = ""; private String sauce = ""; private
- 18. Builder (Строитель) class HawaiianPizzaBuilder extends PizzaBuilder { public void buildDough() { pizza.setDough("cross"); } public void buildSauce()
- 19. Builder (Строитель) class Cook { private PizzaBuilder pizzaBuilder; public void setPizzaBuilder(PizzaBuilder pb) { pizzaBuilder = pb;
- 20. Builder (Строитель) Пример – выборка товара из каталога по сложным критериям При выборе очередного критерия могут
- 21. Abstract Factory (Абстрактная фабрика) Интерфейс для создания группы объектов, принадлежащих одному набору классов и используемых совместно
- 22. Abstract Factory (Абстрактная фабрика) Пример – различные стили пользовательского интерфейса Мы хотим, чтобы в программе можно
- 23. Abstract Factory (Абстрактная фабрика) © Belarus Open Source Laboratory, TechDay Докладчик: Константин Слисенко, JazzTeam
- 24. Abstract Factory (Абстрактная фабрика) interface GUIFactory { public Button createButton(); } class WinFactory implements GUIFactory {
- 25. Abstract Factory (Абстрактная фабрика) class WinButton implements Button { public void paint() { System.out.println("I'm a WinButton");
- 26. Observer (Наблюдатель) Второе название – “издатель-подписчик” Один объект генерирует события, другие объекты эти события получает и
- 27. Observer (Наблюдатель) © Belarus Open Source Laboratory, TechDay Докладчик: Константин Слисенко, JazzTeam import java.util.Observable; import java.util.Observer;
- 28. Observer (Наблюдатель) Пример – диаграмма в Excell, построенная по таблице При изменении данных в таблице –
- 29. Strategy (Стратегия) Общий интерфейс для абстрактного алгоритма Разные реализации конкретных алгоритмов - стратегий Если нужно поменять
- 30. Strategy (Стратегия) class StrategyExample { public static void main(String[] args) { IStragtegy myStrategy; myStrategy = new
- 31. Strategy (Стратегия) Пример 1 – фильтры в Photoshop, на вход подаётся изображение, к нему применяется стратегия-фильтр
- 32. Facade (Фасад) Единая обёртка для группы классов Мы пользуемся фасадом и не думаем о классах, которые
- 33. Facade (Фасад) Пример – любые библиотеки и модули, у которых описан интерфейс © Belarus Open Source
- 34. Facade (Фасад) public class MessageHeader { private String from; private String to; public String getFrom() {
- 35. Facade (Фасад) public class Message { private MessageBody body; private MessageHeader header; public MessageBody getBody() {
- 36. Facade (Фасад) public class MessageCreatorFacade { private Message message = new Message(); private MessageHeader mh =
- 38. Скачать презентацию