Хранитель (шаблон проектирования)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 212.92.147.114 (обсуждение) в 12:04, 10 сентября 2010 (Java). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Хранитель (также известный как Memento, Token, Лексема)поведенческий шаблон проектирования.

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

Применение

Шаблон Хранитель используется, когда:

  • необходимо сохранить снимок состояния объекта (или его части) для последующего восстановления
  • прямой интерфейс получения состояния объекта раскрывает детали реализации и нарушает инкапсуляцию объекта

Структура

  • Originator - "Создатель"
  • Caretaker - "Опекун"
  • Memento - "Хранитель"

Описание

Шаблон Хранитель используется двумя объектами: "Создателем" (originator) и "Опекуном" (caretaker). "Создатель" - это объект, у которого есть внутреннее состояние. Объект "Опекун" может производить некоторые действия с "Создателем", но при этом необходимо иметь возможность восстановить изменения. Для этого "Опекун" запрашивает у "Создателя" объект "Хранителя". Затем выполняет запланированное действие (или последовательность действий). Для выполнения отката "Создателя" к состоянию, которое предшествовало изменениям, "Опекун" возвращает объект "Хранителя" его "Создателю". "Хранитель" является непрозрачным (т.е. таким, который не может или не должен изменяться "Опекуном").

Примеры реализации

Ссылки