
- •Паттерн абстрактная фабрика
- •Паттерн Factory Method
- •Virtual Constructor (виртуальный конструктор).
- •Адаптер
- •Паттерн Decorator
- •Паттерн Composite
- •Участники
- •Паттерн Composite
- •Структурные паттерны
- •Паттерн Composite
- •_ •≫ _ Структурные паттерны
- •Пример кода
- •Паттерн Composite
- •Известные применения
- •Реализация
- •Паттерн Strategy
- •Пример кода
- •Паттерны поведения
- •Паттерн Strategy
- •Паттерны поведения
- •Известные применения
- •Паттерн Strategy
- •Пример кода
- •Паттерны поведения
- •Реализация
- •Паттерн Observer
- •Паттерны поведения
- •Паттерн Observer
- •Паттерн Observer
- •Паттерны поведения
- •Родственные паттерны
Адаптер
Название и классификация паттерна
Адаптер - паттерн, структурирующий классы и объекты.
Назначение
Преобразует интерфейс одного класса в интерфейс другого, который ожида-
ют клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна.
Известен также под именем
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 изменение облика, а не внутреннего устройства объекта.