
- •ПАТТЕРНЫ
- •Определение и классификация
- •ПОРОЖДАЮЩИЕ
- •Порождающие паттерны
- •ПАТТЕРН SINGLETON
- •Singleton
- •Singleton - проблема
- •Singleton - решение
- •Singleton - структура
- •Singleton - участники
- •Паттерн Singleton
- •Singleton – преимущества и недостатки
- •ПАТТЕРН PROTOTYPE
- •Prototype
- •Prototype - проблема
- •Prototype – решение
- •Prototype – структура
- •Prototype - участники
- •Prototype – преимущества и недостатки
- •ПАТТЕРН FACTORY METHOD
- •Factory Method
- •Factory Method - проблема
- •Factory Method - решение
- •Factory Method - решение
- •Factory Method - структура
- •Factory Method - участники
- •Factory Method – преимущества и недостатки
- •ПАТТЕРН ABSTRACT FACTORY
- •Abstract Factory
- •Abstract Factory - проблема
- •Abstract Factory - решение
- •Abstract Factory - структура
- •Abstract Factory - участники
- •Abstract Factory – преимущества и недостатки
- •ПАТТЕРН BUILDER
- •Builder
- •Builder - проблема
- •Builder - решение
- •Builder - решение
- •Builder - решение
- •Builder - структура
- •Паттерн Builder - участники
- •Builder
- •Builder – преимущества и недостатки
- •СТРУКТУРНЫЕ
- •Структурные паттерны
- •ПАТТЕРН ADAPTER
- •Adapter
- •Adapter - проблема
- •Adapter - решение
- •Adapter - структура
- •Adapter - участники
- •Adapter - пример
- •Adapter – достоинства и недостатки
- •ПАТТЕРН BRIDGE
- •Bridge
- •Bridge - проблема
- •Bridge - решение
- •Bridge - структура
- •Bridge - участники
- •Bridge – преимущества и недостатки
- •ПАТТЕРН COMPOSITE
- •Composite
- •Composite – проблема и решение
- •Composite – аналогия из жизни
- •Composite – структура
- •Composite - участники
- •Composite - пример
- •Composite – преимущества и недостатки
- •ПАТТЕРН DECORATOR
- •Decorator
- •Decorator - проблема
- •Decorator – проблема и решение
- •Decorator – решение
- •Decorator – аналогия из жизни
- •Decorator – структура
- •Decorator - участники
- •Decorator – пример
- •Decorator – преимущества и недостатки
- •ПАТТЕРН FACADE
- •Facade
- •Facade – проблема и решение
- •Facade – аналогия из жизни
- •Façade - структура
- •Facade - участники
- •Facade - пример
- •Facade – преимущества и недостатки
- •ПАТТЕРН FLYWEIGHT
- •Flyweight
- •Flyweight - проблема
- •Flyweight - решение
- •Flyweight - решение
- •Flyweight – структура
- •Flyweight - участники
- •Flyweight – пример
- •Flyweight – преимущества и недостатки
- •ПАТТЕРН PROXY
- •Proxy
- •Proxy - проблема
- •Proxy - решение
- •Proxy – аналогия из жизни
- •Proxy – структура
- •Паттерн Proxy - участники
- •Паттерн Proxy - участники
- •Proxy - пример
- •Proxy – преимущества и недостатки
- •ПАТТЕРНЫ
- •Паттерны поведения
- •ПАТТЕРН CHAIN
- •Chain of Responsibility
- •Chain of Responsibility - проблема
- •Chain of Responsibility - решение
- •Chain of Responsibility - решение
- •Chain of Responsibility – аналогия из жизни
- •Chain of Responsibility – структура
- •Chain of Responsibility -
- •Chain of Responsibility - пример
- •Chain of Responsibility - пример
- •Chain of Responsibility –
- •ПАТТЕРН COMMAND
- •Command
- •Command – проблема
- •Command – проблема
- •Command - участники
- •Command – преимущества и недостатки
- •ПАТТЕРН INTERPRETER
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •Паттерн Interpreter
- •– преимущества и недостатки
- •ПАТТЕРН ITERATOR
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •Паттерн Iterator
- •– преимущества и недостатки
- •ПАТТЕРН MEDIATOR
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •Паттерн Mediator
- •– преимущества и недостатки
- •ПАТТЕРН MEMENTO
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •Паттерн Memento
- •– преимущества и недостатки
- •ПАТТЕРН OBSERVER
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •Паттерн Observer
- •– преимущества и недостатки
- •ПАТТЕРН STATE
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •Паттерн State
- •– преимущества и недостатки
- •ПАТТЕРН STRATEGY
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •Паттерн Strategy
- •– преимущества и недостатки
- •ПАТТЕРН TEMPLATE METHOD
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •Паттерн Template Method
- •– преимущества и недостатки
- •ПАТТЕРН VISITOR
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •Паттерн Visitor
- •– преимущества и недостатки

Паттерн Visitor
Отношения
•Клиент, использующий паттерн посетитель, должен создать объект класса ConcreteVisitor, азатем обойти всю структуру, посетив каждый ее элемент.
•При посещении элемента последний вызывает операцию посетителя, соответствующую своему классу. Элемент передает этой операции себя в качестве аргумента, чтобы посетитель мог при необходимости получить доступ к его состоянию.
241

Паттерн Visitor
Отношения
На представленной диаграмме взаимодействий показаны отношения между объектом, структурой, посетителем и двумя элементами.
242

Паттерн Visitor
Результаты
•Упрощает добавление новых операций. С помощью посетителей легко добавлять операции, зависящие от компонентов сложных объектов.
•Объединяет родственные операции и отсекает те, которые не имеют к ним отношения. Родственное поведение не разносится по всем классам, присутствующим в структуре объектов, оно локализовано в посетителе.
•Добавление новых классов ConcreteElement затруднено. Паттерн посетитель усложняет добавление новых подклассов класса Element.
•Посещение различных иерархий классов. Итератор может посещать объекты структуры по мере ее обхода, вызывая операции объектов.
243

Паттерн Visitor
Результаты
•Аккумулирование состояния. Посетители могут аккумулировать информацию о состоянии при посещении объектов структуры.
•Нарушение инкапсуляции. Применение посетителей подразумевает, что у класса ConcreteElement достаточно развитый интерфейс для того, чтобы посетители могли справиться со своей работой.
244

Паттерн Visitor
Реализация
При решении вопроса о применении паттерна посетитель часто возникают два спорных момента:
•Двойная диспетчеризация. По своей сути паттерн посетитель позволяет, не изменяя классы, добавлять в них новые операции.
•Какой участник несет ответственность за обход структуры. Посетитель должен обойти каждый элемент структуры объектов.
245

Паттерн Visitor
Родственные паттерны
•Компоновщик: посетители могут использоваться для выполнения операции над всеми объектами структуры, определенной с помощью паттерна компоновщик.
•Интерпретатор: посетитель может использоваться для выполнения интерпретации.
246

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