Слайд 2
![Что такое Паттерн? Паттерн проектирования — это часто встречающееся решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-1.jpg)
Что такое Паттерн?
Паттерн проектирования — это часто встречающееся решение определённой проблемы при
проектировании архитектуры программ.
Паттерны часто путают с алгоритмами, ведь оба понятия описывают типовые решения каких-то известных проблем. Но если алгоритм — это чёткий набор действий, то паттерн — это высокоуровневое описание решения, реализация которого может отличаться в двух разных программах.
Если привести аналогии, то алгоритм — это кулинарный рецепт с чёткими шагами, а паттерн — инженерный чертёж, на котором нарисовано решение, но не конкретные шаги его реализации.
Слайд 3
![Зачем знать паттерны? Вы можете вполне успешно работать, не зная](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-2.jpg)
Зачем знать паттерны?
Вы можете вполне успешно работать, не зная ни одного
паттерна. Более того, вы могли уже не раз реализовать какой-то из паттернов, даже не подозревая об этом.
Но осознанное владение инструментом как раз и отличает профессионала от любителя. Вы можете забить гвоздь молотком, а можете и дрелью, если сильно постараетесь. Но профессионал знает, что главная фишка дрели совсем не в этом. Итак, зачем же знать паттерны?
Слайд 4
![Три основные группы паттернов Порождающие паттерны беспокоятся о гибком создании](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-3.jpg)
Три основные группы паттернов
Порождающие паттерны беспокоятся о гибком создании объектов без внесения
в программу лишних зависимостей.
Структурные паттерны показывают различные способы построения связей между объектами.
Поведенческие паттерны заботятся об эффективной коммуникации между объектами.
Слайд 5
![Фабричный метод Порождающий паттерн проектирования, который определяет общий интерфейс для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-4.jpg)
Фабричный метод
Порождающий паттерн проектирования, который определяет общий интерфейс для создания
объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Слайд 6
![Проблемы Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-5.jpg)
Слайд 7
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-6.jpg)
Преимущества и недостатки
Слайд 8
![Строитель Строитель — это порождающий паттерн проектирования, который позволяет создавать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-7.jpg)
Строитель
Строитель — это порождающий паттерн проектирования, который позволяет создавать сложные объекты пошагово.
Строитель даёт возможность использовать один и тот же код строительства для получения разных представлений объектов.
Слайд 9
![Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-8.jpg)
Слайд 10
![Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-9.jpg)
Слайд 11
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-10.jpg)
Преимущества и недостатки
Слайд 12
![Прототип Прототип — это порождающий паттерн проектирования, который позволяет копировать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-11.jpg)
Прототип
Прототип — это порождающий паттерн проектирования, который позволяет копировать объекты, не вдаваясь
в подробности их реализации.
Слайд 13
![Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-12.jpg)
Слайд 14
![Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-13.jpg)
Слайд 15
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-14.jpg)
Преимущества и недостатки
Слайд 16
![Одиночка Одиночка — это порождающий паттерн проектирования, который гарантирует, что](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-15.jpg)
Одиночка
Одиночка — это порождающий паттерн проектирования, который гарантирует, что у класса есть
только один экземпляр, и предоставляет к нему глобальную точку доступа.
Слайд 17
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-16.jpg)
Слайд 18
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-17.jpg)
Преимущества и недостатки
Слайд 19
![Адаптер Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-18.jpg)
Адаптер
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами
работать вместе.
Слайд 20
![Проблема Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-19.jpg)
Слайд 21
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-20.jpg)
Преимущества и недостатки
Слайд 22
![Мост Мост — это структурный паттерн проектирования, который разделяет один](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-21.jpg)
Мост
Мост — это структурный паттерн проектирования, который разделяет один или несколько классов
на две отдельные иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга.
Слайд 23
![Абстракция и Реализация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-22.jpg)
Слайд 24
![Решение Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-23.jpg)
Слайд 25
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-24.jpg)
Преимущества и недостатки
Слайд 26
![Компоновщик Компоновщик — это структурный паттерн проектирования, который позволяет сгруппировать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-25.jpg)
Компоновщик
Компоновщик — это структурный паттерн проектирования, который позволяет сгруппировать множество объектов в
древовидную структуру, а затем работать с ней так, как будто это единичный объект.
Слайд 27
![Решение Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-26.jpg)
Слайд 28
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-27.jpg)
Преимущества и недостатки
Слайд 29
![Фасад Фасад — это структурный паттерн проектирования, который предоставляет простой](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-28.jpg)
Фасад
Фасад — это структурный паттерн проектирования, который предоставляет простой интерфейс к сложной
системе классов, библиотеке или фреймворку.
Слайд 30
![Проблема Вашему коду приходится работать с большим количеством объектов некой](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-29.jpg)
Проблема
Вашему коду приходится работать с большим количеством объектов некой сложной библиотеки
или фреймворка. Вы должны самостоятельно инициализировать эти объекты, следить за правильным порядком зависимостей и так далее.
В результате бизнес-логика ваших классов тесно переплетается с деталями реализации сторонних классов. Такой код довольно сложно понимать и поддерживать.
Слайд 31
![Аналогия из жизни Когда вы звоните в магазин и делаете](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-30.jpg)
Аналогия из жизни
Когда вы звоните в магазин и делаете заказ по
телефону, сотрудник службы поддержки является вашим фасадом ко всем службам и отделам магазина. Он предоставляет вам упрощённый интерфейс к системе создания заказа, платёжной системе и отделу доставки.
Слайд 32
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-31.jpg)
Преимущества и недостатки
Слайд 33
![Цепочка обязанностей Цепочка обязанностей — это поведенческий паттерн проектирования, который](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-32.jpg)
Цепочка обязанностей
Цепочка обязанностей — это поведенческий паттерн проектирования, который позволяет передавать запросы
последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.
Слайд 34
![Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-33.jpg)
Слайд 35
![Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-34.jpg)
Слайд 36
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-35.jpg)
Преимущества и недостатки
Слайд 37
![Посредник Посредник — это поведенческий паттерн проектирования, который позволяет уменьшить](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-36.jpg)
Посредник
Посредник — это поведенческий паттерн проектирования, который позволяет уменьшить связанность множества классов
между собой, благодаря перемещению этих связей в один класс-посредник.(аэропорт)
Слайд 38
![Проблема Решение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-37.jpg)
Слайд 39
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-38.jpg)
Преимущества и недостатки
Слайд 40
![Наблюдатель Наблюдатель — это поведенческий паттерн проектирования, который создаёт механизм](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-39.jpg)
Наблюдатель
Наблюдатель — это поведенческий паттерн проектирования, который создаёт механизм подписки, позволяющий одним
объектам следить и реагировать на события, происходящие в других объектах.
Слайд 41
![Проблема](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-40.jpg)
Слайд 42
![Решения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-41.jpg)
Слайд 43
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-42.jpg)
Преимущества и недостатки
Слайд 44
![Состояние Состояние — это поведенческий паттерн проектирования, который позволяет объектам](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-43.jpg)
Состояние
Состояние — это поведенческий паттерн проектирования, который позволяет объектам менять поведение в
зависимости от своего состояния. Извне создаётся впечатление, что изменился класс объекта.
Слайд 45
![Преимущества и недостатки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/427745/slide-44.jpg)
Преимущества и недостатки