Читайте также:
|
|
a Memento (SolverState) - хранитель:
- сохраняет внутреннее состояние объекта Originator. Объем сохраняе
мой информации может быть различным и определяется потребностями
хозяина;
- запрещает доступ всем другим объектам, кроме хозяина. По существу,
у хранителей есть двалнтерфейса. «Посыльный» Caretaker «видит»
лишь «z/зкмм» интерфейс хранителя - он может только передавать храни
теля другим объектам. Напротив, хозяину доступен «широкий» интер
фейс, который обеспечивает доступ ко всем данным, необходимым для
восстановления в прежнем состоянии. Идеальный вариант - когда толь
ко хозяину, создавшему хранитель, открыт доступ к внутреннему состоя
нию последнего;
a Originator (ConstraintSolver) - хозяин:
- создает хранитель, содержащего снимок текущего внутреннего состояния;
- использует хранитель для восстановления внутреннего состояния;
Паттерн Memento
a Caretaker (механизм отката) - посыльный:
- отвечает за сохранение хранителя;
- не производит никаких операций над хранителем и не исследует его внут
реннее содержимое.
Отношения
а посыльный запрашивает хранитель у хозяина, некоторое время держит его у себя, а затем возвращает хозяину, как видно на представленной диаграмме взаимодействий.
Иногда этого не происходит, так как последнему не нужно восстанавливать
прежнее состояние;
а хранители пассивны. Только хозяин, создавший хранитель, имеет доступ к информации о состоянии.
Результаты
Характерные особенности паттерна хранитель:
а сохранение границ инкапсуляции. Хранитель позволяет избежать раскрытия информации, которой должен распоряжаться только хозяин, но которую тем не менее необходимо хранить вне последнего. Этот паттерн экранирует объекты от потенциально сложного внутреннего устройства хозяина, не изменяя границы инкапсуляции;
а упрощение структуры хозяина. При других вариантах дизайна, направленного на сохранение границ инкапсуляции, хозяин хранит внутри себя версии внутреннего состояния, которое запрашивали клиенты. Таким образом, вся ответственность за управление памятью лежит на хозяине. При перекладывании заботы о запрошенном состоянии на клиентов упрощается структура хозяина, а клиентам дается возможность не информировать хозяина о том, что они закончили работу;
а значительные издержки при использовании хранителей. С хранителями могут быть связаны заметные издержки, если хозяин должен копировать большой
Дата добавления: 2015-09-11; просмотров: 81 | Поможем написать вашу работу | Нарушение авторских прав |