2. Паттерн Хранитель следует
применять, когда:
Необходимо
сохранить внутреннее
состояние объекта, для его последующего
восстановления.
Открытие
прямого доступа к сохраняемым
свойствам нарушит инкапсуляцию объекта и
позволит несанкционированно
манипулировать ими.
2
3. Структура:
Originator
(Создатель, хозяин)
Объект, имеющий внутреннее состояние, которое
необходимо сохранить.
Caretaker
(Опекун, посыльный)
Объект, вызывающий изменение внутреннего состояния
создателя и имеющий возможность сохранять и
восстанавливать его.
Memento
(Хранитель)
Объект, в котором сохраняется внутреннее состояние
создателя.
3
4. Реализация*
Пример:
Приложение, позволяющее перемещать точку на
форме, сохранять ее положение и восстанавливать
его.
*Код приложения по рассматриваемому примеру находится на TFS:
$/CSI - Training Center/Clients/Automation/OOP/DP/Memento
4
6. Недостатки:
Работает
только с однотипными классами (для
каждого Originator нужен свой Memento)
Не
позволяет сохранять последовательность
действий с разными объектами (для Undo/Redo
больше подходит паттерн Command
Не
готовит борщ
6
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/