Другое название: Token (Лексема).

Назначение: фиксирует и выносит за пределы объекта его внутреннее состояние так, чтобы позднее можно было восстановить в нем объект, не нарушая при этом принципа инкапсуляции.

Общая структура решения.

 

 

Memento – хранитель: сохраняет внутреннее состояние объекта Originator, объем сохраняемой информации при этом определяется потребностями хозяина; запрещает доступ к состоянию всем другим объектам, кроме хозяина. Внутренняя структура состояния в хранителе может отличаться от структуры состояния хозяина, главное – она должна однозначно быть воспроизведена при вызове операции GetState. Хранители пассивны. Только хозяин, создавший хранитель, имеет доступ к информации о состоянии.

Originator – хозяин: создает хранителя, содержащего снимок текущего внутреннего состояния; использует его в будущем для восстановления этого состояния. Между сохранением и восстановлением состояния объект-хранитель может содержаться в другом объекте.