
- •Самарский государственный аэрокосмический университет имени академика С.П. Королёва
- •План лекции
- •Повторное использование
- •МеханизмыНаследование повторного
- •Делегирование
- •Рекомендации по написанию
- •Причины перепроектирования
- •Фреймворки
- •Паттерны проектирования
- •Паттерны в ООП
- •Фреймворки vs Паттерны
- •GoFОписания паттернов
- •Порождающие паттерны
- •Singleton
- •Singleton: структура
- •Factory Method
- •Factory Method
- •Factory Method
- •Factory Method
- •Factory Method
- •Структурные паттерны
- •Adapter
- •Adapter
- •Adapter (класса)
- •Adapter (объекта)
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Proxy
- •Proxy
- •Proxy
- •Proxy
- •Proxy
- •Паттерны поведения
- •Паттерны поведения
- •Iterator
- •Iterator
- •Iterator
- •Iterator
- •Iterator
- •Observer
- •Observer
- •Observer
- •Observer
- •Observer
- •Observer
- •Спасибо за внимание!
- •Дополнительные источники

Структурные паттерны
Adapter |
Изменение интерфейса |
Адаптер |
|
Bridge |
Разделение реализации объекта |
Мост |
|
Composite |
Сложная структура и состав объекта |
Компоновщик |
|
Decorator |
Изменение обязанностей объекта без порождения |
Декоратор |
подкласса |
Facade |
Интерфейс к подсистеме |
Фасад |
|
Flyweight |
Снижение накладных расходов на хранение объектов |
Приспособленец |
|
Proxy |
Способ доступа к объекту, смена его местоположения |
Заместитель |
|
Самарский государственный аэрокосмический университет имени академика С.П. Королёва 21

Adapter
Название и классификацияАдаптер – паттерн, структурирующий классы и
объектыНазначение
Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна
Известен также под именемWrapper
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Adapter
Применимость
Применяйте адаптер классов, когда:
хотите использовать существующий класс, но его интерфейс не соответствует вашим потребностям
собираетесь создать повторно используемый класс, который должен взаимодействовать с заранее неизвестными или не связанными с ним классами, имеющими несовместимые интерфейсы
Применяйте адаптер объектов, когда
нужно использовать несколько существующих подклассов, но непрактично адаптировать их интерфейсы путем порождения новых подклассов от каждого. В этом случае адаптер объектов может приспосабливать интерфейс их общего родительского класса
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Adapter (класса)
Неприменим, если требуется адаптировать не только конкретный класс, но и его подклассы
Возможно изменение в адаптере операций адаптируемого класса
Вводится только один объект (непосредственно адаптера)
Самарский государственный аэрокосмический университет имени академика С.П. Королёва 24

Adapter (объекта)
Один адаптер может работать со множеством адаптируемых объектов, включая объекты подклассов
Затруднено замещение операций адаптируемого класса
Самарский государственный аэрокосмический университет имени академика С.П. Королёва 25

Decorator
Название и классификацияДекоратор – паттерн, структурирующий объектыНазначение
Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности
Известен также под именемWrapper
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Decorator
Мотивация
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Decorator
Применимость
Используйте паттерн декоратор:для динамического, прозрачного для клиентов добавления обязанностей объектам
для реализации обязанностей, которые могут быть сняты с объектакогда расширение путем порождения
подклассов по каким-то причинам неудобно или невозможно
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Decorator
Структура
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Decorator
Особенности
Большая гибкость, чем у статического наследованияСоздание цепочек декораторов, в том числе из
одних и тех же в одной цепочкеПозволяет избежать перегруженных функциями классов на верхних уровнях иерархииДекоратор и его компонент не идентичны
Множество мелких объектов
Самарский государственный аэрокосмический университет имени академика С.П. Королёва