Паттерны
проектирования
Memento
«Хранитель»
Автор:
Вадим Зубович
Отдел автоматизации
Coherent Solutions
1
Паттерн Хранитель следует
применять, когда:
Необходимо

сохранить внутреннее
состояние объекта, для его последующего
восс...
Структура:
Originator

(Создатель, хозяин)

Объект, имеющий внутреннее состояние, которое
необходимо сохранить.
Caretake...
Реализация*
Пример:
Приложение, позволяющее перемещать точку на
форме, сохранять ее положение и восстанавливать
его.

*Код...
Рассмотрим код:
Интерфейс IOriginator
Класс Memento

Класс Caretaker
Класс Dot (Originator)
5
Недостатки:
Работает

только с однотипными классами (для
каждого Originator нужен свой Memento)
Не

позволяет сохранять ...
Что следует почитать:
●

●

●

Design Patterns: Elements of Reusable Object-oriented
Software, by Erich Gamma, Richard Hel...
Спасибо за внимание!

Вадим Зубович
8
Upcoming SlideShare
Loading in …5
×

Memento

315 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
315
On SlideShare
0
From Embeds
0
Number of Embeds
48
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Memento

  1. 1. Паттерны проектирования Memento «Хранитель» Автор: Вадим Зубович Отдел автоматизации Coherent Solutions 1
  2. 2. Паттерн Хранитель следует применять, когда: Необходимо сохранить внутреннее состояние объекта, для его последующего восстановления. Открытие прямого доступа к сохраняемым свойствам нарушит инкапсуляцию объекта и позволит несанкционированно манипулировать ими. 2
  3. 3. Структура: Originator (Создатель, хозяин) Объект, имеющий внутреннее состояние, которое необходимо сохранить. Caretaker (Опекун, посыльный) Объект, вызывающий изменение внутреннего состояния создателя и имеющий возможность сохранять и восстанавливать его. Memento (Хранитель) Объект, в котором сохраняется внутреннее состояние создателя. 3
  4. 4. Реализация* Пример: Приложение, позволяющее перемещать точку на форме, сохранять ее положение и восстанавливать его. *Код приложения по рассматриваемому примеру находится на TFS: $/CSI - Training Center/Clients/Automation/OOP/DP/Memento 4
  5. 5. Рассмотрим код: Интерфейс IOriginator Класс Memento Класс Caretaker Класс Dot (Originator) 5
  6. 6. Недостатки: Работает только с однотипными классами (для каждого Originator нужен свой Memento) Не позволяет сохранять последовательность действий с разными объектами (для Undo/Redo больше подходит паттерн Command Не готовит борщ 6
  7. 7. Что следует почитать: ● ● ● Design Patterns: Elements of Reusable Object-oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1995 – “Gang of Four” http://cpp-reference.ru/patterns/behavioralpatterns/memento/ http://habrahabr.ru/sandbox/39499/
  8. 8. Спасибо за внимание! Вадим Зубович 8

×