Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тп модуль.docx
Скачиваний:
2
Добавлен:
10.09.2019
Размер:
1.06 Mб
Скачать

Адаптер

Название и классификация паттерна

Адаптер - паттерн, структурирующий классы и объекты.

Назначение

Преобразует интерфейс одного класса в интерфейс другого, который ожида-

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

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

Wrapper (обертка).

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

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

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

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

3 (только для адаптера объектов!) нужно использовать несколько существу-

ющих подклассов, но непрактично адаптировать их интерфейсы путем по-

рождения новых подклассов от каждого. В этом случае адаптер объектов

может приспосабливать интерфейс их общего родительского класса.

Результаты

Результаты применения адаптеров объектов и классов различны.

Адаптер класса:

1 адаптирует Adaptee к Target, перепоручая действия конкретному классу

Adaptee. Поэтому данный паттерн не будет работать, если мы захотим од-

новременно адаптировать класс и его подклассы;

2 позволяет адаптеру Adapter заместить некоторые операции адаптируемого

класса Adaptee, так как Adapter есть не что иное, как подкласс Adaptee;

3 вводит только один новый объект. Чтобы добраться до адаптируемого клас-

са, не нужно никакого дополнительного обращения по указателю.

Адаптер объектов:

1 позволяет одному адаптеру Adapter работать со многим адаптируемыми

объектами Adaptee, то есть с самим Adaptee и его подклассами (если та-

ковые имеются). Адаптер может добавить новую функциональность сразу

всем адаптируемым объектам;

2 затрудняет замещение операций класса Adaptee. Для этого потребуется по-

родить от Adaptee подкласс и заставить Adapter ссылаться на этот под-

класс, а не на сам Adaptee.

Паттерн Decorator

Название и классификация паттерна

Декоратор - паттерн, структурирующий объекты.

Назначение

Динамически добавляет объекту новые обязанности. Является гибкой альтер-

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

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

Wrapper (обертка).

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

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

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

объектам;

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

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

удобно или невозможно. Иногда приходится реализовывать много незави-

симых расширений, так что порождение подклассов для поддержки всех

возможных комбинаций приведет к комбинаторному росту их числа. В дру-

гих случаях определение класса может быть скрыто или почему-либо еще

недоступно, так что породить от него подкласс нельзя.

Результаты

У паттерна декоратор есть, по крайней мере, два плюса и два минуса:

1 большая гибкость, нежели у статического наследования

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

3. декоратор и его компонент не идентичны.

4. множество мелких объектов.

Применение паттерна декоратор требует рассмотрения нескольких вопросов:

1 соответствие интерфейсов.

2 облегченные классы Component.

3 изменение облика, а не внутреннего устройства объекта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]