
- •ПАТТЕРНЫ
- •Определение и классификация
- •ПОРОЖДАЮЩИЕ
- •Порождающие паттерны
- •ПАТТЕРН 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
- •– преимущества и недостатки

Паттерн Memento
Родственные паттерны
Команда: команды помещают информацию о состоянии, необходимую для отмены выполненных действий, в хранители.
181

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

ПАТТЕРН OBSERVER

Паттерн Observer
Название и классификация паттерна
• Наблюдатель - паттерн поведения объектов.
Назначение
•Определяет зависимость типа один ко многим между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Известен также под именем
• Dependents (подчиненные), Publish-Subscribe (издатель-подписчик).
184

Паттерн Observer
Применимость
Используйте паттерн наблюдатель в следующих ситуациях:
•Когда у абстракции есть два аспекта, один из которых зависит от другого. Инкапсуляции этих аспектов в разные объекты позволяют изменять и повторно использовать их независимо;
•Когда при модификации одного объекта требуется изменить другие и вы не знаете, сколько именно объектов нужно изменить;
•Когда один объект должен оповещать других, не делая предположений об уведомляемых объектах. Другими словами, вы не хотите, чтобы объекты были тесно связаны между собой.
185

Паттерн Observer
Мотивация
186

Паттерн Observer
Структура
187

Паттерн Observer
Участники
•Subject - субъект:
•- располагает информацией о своих наблюдателях. За субъектом может следить любое число наблюдателей;
•- предоставляет интерфейс для присоединения и отделения наблюдателей;
•Observer - наблюдатель:
•- определяет интерфейс обновления для объектов, которые должны быть уведомлены об изменении субъекта;
•ConcreteSubject - конкретный субъект:
•- сохраняет состояние, представляющее интерес для конкретного наблюдателя ConcreteObserver;
•- посылает информацию своим наблюдателям, когда происходит изменение;
•ConcreteObserver - конкретный наблюдатель:
•- хранит ссылку на объект класса ConcreteSubj ect;
•- сохраняет данные, которые должны быть согласованы с данными субъекта;
•- реализует интерфейс обновления, определенный в классе Observer, чтобы поддерживать согласованность с субъектом.
188

Паттерн Observer
Отношения
•Объект ConcreteSubject уведомляет своих наблюдателей о любом изменении, которое могло бы привести к рассогласованности состояний наблюдателя и субъекта;
•После получения от конкретного субъекта уведомления об изменении объект ConcreteObserver может запросить у субъекта дополнительную информацию, которую использует для того, чтобы оказаться в состоянии, согласованном с состоянием субъекта.
189

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