Читайте также:
|
|
Структурные паттерны:
Adapter Адаптер | Изменение интерфейса |
Bridge Мост | Разделение реализации объекта |
Composite Компоновщик | Сложная структура и состав объекта |
Decorator Декоратор | Изменение обязанностей объекта без порождения подкласса |
Facade Фасад | Интерфейс к подсистеме |
Flyweight Приспособленец | Снижение накладных расходов на хранение объектов |
Proxy Заместитель | Способ доступа к объекту, смена его местоположения |
Adapter: Название и классификация: Адаптер – паттерн, структурирующий классы и объекты.
Назначение: Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна.Известен также под именем
Wrapper
Adapter: применимость
Применяйте адаптер классов, когда:
1)Хотите использовать существующий класс, но его интерфейс не соответствует вашим потребностям.
2)Собираетесь создать повторно используемый класс, который должен взаимодействовать с заранее неизвестными или не связанными с ним классами, имеющими несовместимые интерфейсы.
Применяйте адаптер объектов, когда:
1) Нужноиспользовать несколько существующих подклассов, но непрактично адаптировать их интерфейсы путем порождения новых подклассов от каждого. В этом случае адаптер объектов может приспосабливать интерфейс их общего родительского класса.
Adapter (КЛАССА): Неприменим, если требуется адаптировать не только конкретный класс, но и его подклассы. Возможно изменение в адаптере операций адаптируемого класса. Вводится только один объект (непосредственно адаптера).
Adapter (ОБЪЕКТА):
Один адаптер может работать со множеством адаптируемых объектов, включая объекты подклассов. Затруднено замещение операций адаптируемого класса.
Decorator:
Название и классификация:Декоратор – паттерн, структурирующий объекты
Назначение:Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности.
Известен также под именем Wrapper.
Decorator: мотивация
Decorator: применимость
Используйте паттерн декоратор: Для динамического, прозрачного для клиентов добавления обязанностей объектам. Для реализации обязанностей, которые могут быть сняты с объекта. Когда расширение путем порождения подклассов по каким-то причинам неудобно или невозможно.
Decorator: структура
Decorator: особенности
· Большая гибкость, чем у статического наследования.
· Создание цепочек декораторов, в том числе из одних и тех же в одной цепочке
· Позволяет избежать перегруженных функциями классов на верхних уровнях иерархии
· Декоратор и его компонент не идентичны
· Множество мелких объектов
· Соответствие интерфейсов декоратора и декорируемого объекта
o Возможное отсутствие абстрактного класса декоратора
o Облегчение, по возможности, декорируемого класса
o Изменяется «облик», а не внутренне устройство объекта
Proxy:
Название и классификация:Заместитель – паттерн, структурирующий объекты.
Назначение: Является суррогатом другого объекта и контролирует доступ к нему.
Известен также под именем Surrogate
Мотивация:
Применимость: Заместитель применим во всех случаях, когда возникает необходимость сослаться на объект более изощренно, чем это возможно, если использовать простую ссылку.
Удаленный заместитель: предоставляет локального представителя вместо объекта, находящегося в другом адресном пространстве.
Виртуальный заместитель: создает тяжелые объекты по требованию.
Защищающий заместитель: контролирует доступ к исходному объекту.
Умная ссылка:
З амена обычного указателя:
· подсчет числа ссылок на реальный объект
· загрузка объекта в память при первом обращении к нему
· проверка и установка блокировки на реальный объект при обращении к нему, чтобы никакой другой объект не смог в это время изменить его
Proxy: структура
Диаграмма объектов:
Паттерны поведения:
Interpreter Интерпретатор | Грамматика и интерпретация языка |
Iterator Итератор | Способ обхода элементов агрегата |
Command Команда | Время и способ выполнения запроса за счет заключения запроса в объект |
Observer Наблюдатель | Способ, которым зависимые объекты поддерживают себя в актуальном состоянии |
Visitor Посетитель | Операции, которые можно применить к объекту (добавление операций к объектам) |
Mediator Посредник | Способ кооперации взаимодействующих объектов через промежуточный |
State Состояние | Варьирование поведения объекта в зависимости от его состояния |
Strategy Стратегия | Заключение алгоритма в объект, возможность замены алгоритмов |
Memento Хранитель | Закрытая информация, хранящаяся вне объекта, и время ее сохранения |
Chain of Responsibility Цепочка обязанностей | Набор объектов, выполняющих запрос |
Template Method Шаблонный метод | Выделение в абстракцию шагов алгоритма |
Iterator: Название и классификация: Итератор – опаттерн поведения объектов.
Назначение: Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления.
Известен также под именем Cursor
Iterator: мотивация
Iterator: применимость
Используйте итератор: 1) Для доступа к содержимому агрегированных объектов без раскрытия их внутреннего представления.
2) Для поддержки нескольких активных обходов одного и того же агрегированного объекта. 3) Для предоставления единообразного интерфейса с целью обхода различных агрегированных структур (для поддержки полиморфной итерации).
Iterator: структура
Дата добавления: 2015-09-11; просмотров: 86 | Поможем написать вашу работу | Нарушение авторских прав |