Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Паттерны (3).pptx
Скачиваний:
44
Добавлен:
22.03.2023
Размер:
5.4 Mб
Скачать

Паттерн Template Method

Известные применения

Шаблонные методы настолько фундаментальны, что встречаются почти в каждом абстрактном классе. В работах Ребекки Вирфс-Брок и др. [WBWW90, WBJ90] подробно обсуждаются шаблонные методы.

231

Паттерн Template Method

Родственные паттерны

Фабричные методы часто вызываются из шаблонных.

Стратегия: шаблонные методы применяют наследование для модификации части алгоритма. Стратегии используют делегирование для модификации алгоритма в целом.

232

– преимущества и недостатки

Преимущества Недостатки

ПАТТЕРН VISITOR

Паттерн Visitor

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

Посетитель - паттерн поведения объектов.

Назначение

Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн посетитель позволяет определить новую операцию, не изменяя классы этих объектов.

235

Паттерн Visitor

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

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

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

Над объектами, входящими в состав структуры, надо выполнять разнообразные, не связанные между собой операции и вы не хотите засорять классы такими операциями.

Классы, устанавливающие структуру объектов, изменяются редко, но новые операции над этой структурой добавляются часто.

236

Паттерн Visitor

Мотивация

237

Паттерн Visitor

Структура

238

Паттерн Visitor

Участники

Visitor (NodeVisitor) - посетитель:

- объявляет операцию V i s i t для каждого класса ConcreteElement в структуре объектов. Имя и сигнатура этой операции идентифицируют класс, который посылает посетителю запрос Visit. Это позволяет посетителю определить, элемент какого конкретного класса он посещает. Владея такой информацией, посетитель может обращаться к элементу напрямую через его интерфейс;

Concrete Visitor (TypeCheckingVisitor) - конкретный посетитель:

- реализует все операции, объявленные в классе Visitor. Каждая операция реализует фрагмент алгоритма, определенного для класса соответствующего объекта в структуре. Класс ConcreteVisitor предоставляет контекст для этого алгоритма и сохраняет его локальное состояние. Часто в этом состоянии аккумулируются результаты, полученные в процессе обхода структуры;

239

Паттерн Visitor

Участники

Element (Node) - элемент:

- определяет операцию Accept, которая принимает посетителя в качестве аргумента;

ConcreteElement (AssignmentNode, VariableRefNode) – конкретный элемент:

- реализует операцию Accept, принимающую посетителя как аргумент;

ObjectStructure (Program) - структура объектов:

- может перечислить свои элементы;

- может предоставить посетителю высокоуровневый интерфейс для посещения своих элементов;

- может быть как составным объектом (см. паттерн компоновщик), так и коллекцией, например списком или множеством.

240

Соседние файлы в папке Лекции