Некоторые преимущества паттерна «Хранитель» (Memento) в разработке программного обеспечения:
- Сохранение границ инкапсуляции. 1 Паттерн позволяет избежать раскрытия информации, которой должен распоряжаться только хозяин, но которую необходимо хранить вне его. 1
- Упрощение структуры хозяина. 12 Ответственность за управление памятью перекладывается на клиентов, и хозяину не нужно хранить внутри себя версии внутреннего состояния. 2
- Определение простого интерфейса для сохранения и восстановления состояния. 5
Некоторые недостатки паттерна «Хранитель»:
- Значительные издержки при использовании. 1 Они возникают, если хозяин должен копировать большой объём информации для занесения в память хранителя или если клиенты создают и возвращают хранителей достаточно часто. 1
- Скрытая плата за содержание хранителя. 1 Посыльный, который отвечает за удаление хранителя, не располагает информацией о том, какой объём информации о состоянии скрыт в нём. 1 Поэтому нетребовательный к ресурсам посыльный может расходовать очень много памяти при работе с хранителем. 1
- Ограничения на язык программирования. 2 Для реализации этого паттерна язык должен поддерживать два уровня доступа — для «широкого» и «узкого» интерфейса. 2