Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции Java / 13. Введение в паттерны проектирования.pptx

.pdf
Скачиваний:
161
Добавлен:
16.03.2015
Размер:
1.01 Mб
Скачать

Структурные паттерны

 

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

21

Adapter

nНазвание и классификация Адаптер – паттерн, структурирующий классы и объекты

nНазначение Преобразует интерфейс одного класса в

интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна

nИзвестен также под именем

Wrapper

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

22

Adapter

Применимость

n Применяйте адаптер классов, когда:

хотите использовать существующий класс, но его интерфейс не соответствует вашим потребностям

собираетесь создать повторно используемый класс, который должен взаимодействовать с заранее неизвестными или не связанными с ним классами, имеющими несовместимые интерфейсы

n Применяйте адаптер объектов, когда

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

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

23

Adapter (класса)

nНеприменим, если требуется адаптировать не только конкретный класс, но и его подклассы

nВозможно изменение в адаптере операций адаптируемого класса

nВводится только один объект (непосредственно адаптера)

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

24

Adapter (объекта)

nОдин адаптер может работать со множеством адаптируемых объектов, включая объекты подклассов

nЗатруднено замещение операций адаптируемого класса

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

25

Decorator

nНазвание и классификация Декоратор – паттерн, структурирующий объекты

nНазначение Динамически добавляет объекту новые

обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности

nИзвестен также под именем

Wrapper

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

26

Decorator

Мотивация

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

27

Decorator

Применимость

Используйте паттерн декоратор:

nдля динамического, прозрачного для клиентов добавления обязанностей объектам

nдля реализации обязанностей, которые могут быть сняты с объекта

nкогда расширение путем порождения подклассов по каким-то причинам неудобно или невозможно

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

28

Decorator

Структура

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

29

Decorator

Особенности

nБольшая гибкость, чем у статического наследования

nСоздание цепочек декораторов, в том числе из одних и тех же в одной цепочке

nПозволяет избежать перегруженных функциями классов на верхних уровнях иерархии

nДекоратор и его компонент не идентичны

nМножество мелких объектов

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

30