Паттерн проектирования в контексте языка UML представляет собой параметризованную кооперацию вместе с описанием базовых принципов ее использования.
При изображении паттерна используется обозначение параметризованной кооперации языка UML (рис.9.8), которая обозначается пунктирным эллипсом. В правый верхний угол эллипса встроен пунктирный прямоугольник, в котором перечислены параметры кооперации, которая представляет тот или иной паттерн.
В последующем параметры паттерна могут быть заменены различными классами, чтобы получить реализацию паттерна в рамках конкретной кооперации. Эти параметры специфицируют используемые классы в форме ролей классов в рассматриваемой подсистеме. При связывании или реализации паттерна любая линия помечается именем параметра паттерна, которое является именем роли соответствующей ассоциации. В дополнение к диаграммам кооперации особенности реализации отдельных паттернов представляются с помощью диаграмм последовательности.
Таблица 9.1. Полный список паттернов проектирования GoF
№
| Название паттерна
| Перевод
| Назначение паттерна
|
| Abstract Factory
| Абстрактная фабрика
| Предоставляет интерфейс для создания множества связанных между собой или независимых объектов, конкретные классы которых неизвестны.
|
| Adapter(синоним - Wrapper)
| Адаптер (Обертка)
| Преобразует существующий интерфейс класса в другой интерфейс, который понятен клиентам. При этом обеспечивает совместную работу классов, невозможную без данного паттерна из-за несовместимости интерфейсов.
|
| Bridge
| Мост
| Отделяет абстракцию класса от его реализации, благодаря чему появляется возможность независимо изменять то и другое.
|
| Builder
| Строитель
| Отделяет создание сложного объекта от его представления, позволяя использовать один и тот же процесс разработки для создания различных представлений.
|
| Chain of Responsibility
| Цепочка обязанностей
| Позволяет избежать жесткой зависимости отправителя запроса от его получателя, при этом объекты-получатели связываются в цепочку, а запрос передается по цепочке, пока какой-то объект его не обработает.
|
| Command
| Команда
| Инкапсулирует запрос в виде объекта, обеспечивая параметризацию клиентов типом запроса, установление очередности запросов, протоколирование запросов и отмену выполнения операций.
|
| Composite
| Компоновщик
| Группирует объекты в иерархические структуры для представления отношений типа " часть-целое", что позволяет клиентам работать с единичными объектами так же, как с группами объектов.
|
| Decorator
| Декоратор
| Применяется для расширения имеющейся функциональности и является альтернативой порождению подклассов на основе динамического назначения объектам новых операций.
|
| Facade
| Фасад
| Предоставляет единый интерфейс к множеству операций или интерфейсов в системе на основе унифицированного интерфейса для облегчения работы с системой.
|
| Factory Method
| Фабричный метод
| Определяет интерфейс для разработки объектов, при этом объекты данного класса могут быть созданы его подклассами.
|
| Flyweight
| Приспособленец
| Использует принцип разделения для эффективной поддержки большого числа мелких объектов.
|
| Interpreter
| Интерпретатор
| Для заданного языка определяет представление его грамматики на основе интерпретатора предложений языка, использующего это представление.
|
| Iterator
| Итератор
| Дает возможность последовательно перебрать все элементы составного объекта, не раскрывая его внутреннего представления.
|
| Mediator
| Посредник
| Определяет объект, в котором инкапсулировано знание о том, как взаимодействуют объекты из некоторого множества. Способствует уменьшению числа связей между объектами, позволяя им работать без явных ссылок друг на друга и независимо изменять схему взаимодействия.
|
| Memento
| Хранитель
| Дает возможность получить и сохранить во внешней памяти внутреннее состояние объекта, чтобы позже объект можно было восстановить точно в таком же состоянии, не нарушая принципа инкапсуляции.
|
| Observer
| Наблюдатель
| Специфицирует зависимость типа " один ко многим" между различными объектами, так что при изменении состояния одного объекта все зависящие от него получают извещение и автоматически обновляются.
|
| Prototype
| Прототип
| Описывает виды создаваемых объектов с помощью прототипа, что позволяет создавать новые объекты путем копирования этого прототипа.
|
| Proxy
| Заместитель
| Подменяет выбранный объект другим объектом для управления контролем доступа к исходному объекту.
|
| Singleton
| Одиночка
| Для выбранного класса обеспечивает выполнение требования единственности экземпляра и предоставления к нему полного доступа.
|
| State
| Состояние
| Позволяет выбранному объекту варьировать свое поведение при изменении внутреннего состояния. При этом создается впечатление, что изменился класс объекта.
|
| Strategy
| Стратегия
| Определяет множество алгоритмов, инкапсулируя их все и позволяя подставлять один вместо другого. При этом можно изменять алгоритм независимо от клиента, который им пользуется.
|
| Template Method
| Шаблонный метод
| Определяет структуру алгоритма, перераспределяя ответственность за некоторые его шаги на подклассы. При этом подклассы могут переопределять шаги алгоритма, не меняя его общей структуры.
|
| Visitor
| Посетитель
| Позволяет определить новую операцию, не меняя описаний классов, у объектов которых она вызывается.
|