который позволяет сохранять и восстанавливать прошлые состояния объектов, не раскрывая подробностей их реализации. Википедия: Снимок - это шаблон разработки программного обеспечения, который обеспечивает возможность восстановления объекта до его предыдущего состояния (отменить с помощью отката). Обычно полезно, когда вам нужно предоставить какую-то функцию отмены. Назначение Не нарушая инкапсуляции, фиксирует и выносит за пределы объекта его внутреннее состояние так, чтобы позднее можно было восстановить в нем объект.
сохранить мгновенный снимок состояния объекта (или его части), чтобы в последствии объект можно было восстановить в том же состоянии; • прямое получение этого состояния раскрывает детали реализации и нарушает инкапсуляцию объекта.
O r i g i n a t o r ; • запрещает доступ всем другим объектам, кроме хозяина. Originator - хозяин: • создает хранитель, содержащего снимок текущего внутреннего состояния; • использует хранитель для восстановления внутреннего состояния. Caretaker (механизм отката) - посыльный: • отвечает за сохранение хранителя; • непроизводит никаких операций над хранителем и не исследует его внутреннее содержимое.
• Упрощает структуру исходного объекта. Ему не нужно хранить историю версий своего состояния. • Требует много памяти, если клиенты слишком часто создают снимки. • Может повлечь дополнительные издержки памяти, если объекты, хранящие историю, не освобождают ресурсы, занятые устаревшими снимками. • В некоторых языках (например, PHP, Python, JavaScript) сложно гарантировать, чтобы только исходный объект имел доступ к состоянию снимка.
состоянии, необходимую для отмены выполненных действий, в хранители • Снимок можно использовать вместе с Итератором, чтобы сохранить текущее состояние обхода структуры данных и вернуться к нему в будущем, если потребуется.
3. Книга “Паттерны проектирования” Эрик Фримен, Элизабет Фримен. 4. Шаблоны проектирования простым языком. Часть третья. Поведенческие шаблоны 5. Паттерны проектирования. 6. Репозиторий с примерами DesignPatternsPHP 7. Книга “Приемы объектно-ориентированного проектирования: паттерны проектирования” Э. Гамма Р. Хелм Р. Джонсон Дж. Влиссидес Литература 20