Классы чаще всего реализуются с помощью , хотя они могут быть построены и на основе .
Если нужно копировать перед вставкой в историю выполненных команд, вам может помочь .
Архитектура, построенная на и , часто может быть улучшена за счёт внедрения . Он позволяет клонировать сложные структуры объектов, а не собирать их заново.
не опирается на наследование, но ему нужна сложная операция инициализации. наоборот, построен на наследовании, но не требует сложной инициализации.
иногда можно заменить , если объект, чьё состояние требуется сохранять в истории, довольно простой, не имеет активных ссылок на внешние ресурсы, либо их можно легко восстановить.
, и могут быть реализованы при помощи .