Опекун

Memento

Назначение

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

Решаемы задачи

  • возможность сохранить мгновенный снимок состояния объекта (или его части), чтобы впоследствии объект можно было восстановить в том же состоянии

  • используется в случае, если прямое получение состояния объекта раскрывает детали реализации и нарушает принцип инкапсуляции

UML диаграмма

UML диаграмма паттерна "Опекун"

Преимущества

  • отделение логики сохранения и восстановления состояния от логики самого объекта: позволяет снять с класса задачу о сохранении своих предыдущих состояний

  • предоставление возможности откатиться к предыдущему состоянию объекта

  • возможность предоставлять различные алгоритмы сохранения состояния, позволяя выбрать наиболее подходящий подход для конкретной ситуации

Недостатки

  • затраты памяти на сохранение снимков состояний

  • потребность в реализации механизма очистки и определения того, нужны снимки или нет

  • увеличение сложности кода из-за потребности создания дополнительных классов и методов

Связь с другими паттернами

  • Команда: паттерн опекун может использоваться в сочетании с паттерном команда для реализации отмены и повтора операций. Команда может создавать опекуна, содержащего текущее состояние объекта перед выполнением операции, и сохранять его в стеке или списке. Затем операции отмены и повтора могут использовать сохраненного опекуна, чтобы восстановить предыдущее состояние объекта.

  • Итератор: хранитель может быть использован вместе с итератором для сохранения текущего состояния итератора в виде снимка. Это позволяет итератору восстановить свое состояние после некоторых операций или переходов.

Last updated

Was this helpful?