Опекун
Memento
Last updated
Was this helpful?
Memento
Last updated
Was this helpful?
Паттерн опекун (Memento)- поведенческий паттерн проектирования, который обеспечивает механизм сохранения состояния объекта без нарушения принципа инкапсуляции таким образом, чтобы он мог быть восстановлен в будущем.
возможность сохранить мгновенный снимок состояния объекта (или его части), чтобы впоследствии объект можно было восстановить в том же состоянии
используется в случае, если прямое получение состояния объекта раскрывает детали реализации и нарушает принцип инкапсуляции
отделение логики сохранения и восстановления состояния от логики самого объекта: позволяет снять с класса задачу о сохранении своих предыдущих состояний
предоставление возможности откатиться к предыдущему состоянию объекта
возможность предоставлять различные алгоритмы сохранения состояния, позволяя выбрать наиболее подходящий подход для конкретной ситуации
затраты памяти на сохранение снимков состояний
потребность в реализации механизма очистки и определения того, нужны снимки или нет
увеличение сложности кода из-за потребности создания дополнительных классов и методов
: паттерн опекун может использоваться в сочетании с паттерном команда для реализации отмены и повтора операций. Команда может создавать опекуна, содержащего текущее состояние объекта перед выполнением операции, и сохранять его в стеке или списке. Затем операции отмены и повтора могут использовать сохраненного опекуна, чтобы восстановить предыдущее состояние объекта.
: хранитель может быть использован вместе с итератором для сохранения текущего состояния итератора в виде снимка. Это позволяет итератору восстановить свое состояние после некоторых операций или переходов.