Опекун
Memento
Назначение
Паттерн опекун (Memento)- поведенческий паттерн проектирования, который обеспечивает механизм сохранения состояния объекта без нарушения принципа инкапсуляции таким образом, чтобы он мог быть восстановлен в будущем.
Решаемы задачи
возможность сохранить мгновенный снимок состояния объекта (или его части), чтобы впоследствии объект можно было восстановить в том же состоянии
используется в случае, если прямое получение состояния объекта раскрывает детали реализации и нарушает принцип инкапсуляции
UML диаграмма

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