Подтвердить что ты не робот

Разница между шаблоном Memento и сериализацией

Я занимаюсь некоторыми исследованиями в шаблоне Memento, и я вообще новичок в поведенческих моделях, и с моими исследованиями я очень запутался. Одна из главных вещей, с которыми я смущаюсь, - это различия между шаблоном Memento и сериализацией.

Из того, что я могу собрать, можно использовать для хранения объектов и их возврата позже, но я не смог найти четкий ответ на то, каковы ключевые различия между ними, может быть, я что-то пропустил в моих исследованиях, но мне было интересно, может ли кто-нибудь пролить некоторый свет на то, что различия между ними.

Спасибо

4b9b3361

Ответ 1

Как правило, шаблон Memento используется для реализации поддержки отката/сохранения точки. Например, я могу захотеть пометить состояние объекта в определенный момент времени, выполнить некоторую работу и затем решить вернуть этот объект обратно в точку, в которой была отмечена.

Реализация шаблона Memento может использовать сериализацию, которая включала бы сохранение содержимого объекта в байт [] и сохранение в памяти или запись на диск. Когда возврат содержимого объекта будет перестроен из сериализованной копии.

И наоборот, я мог бы реализовать шаблон Memento, клонировав объект в памяти и сохраняя ссылку на копию, а затем копируя состояние обратно, если объект нуждается в возврате. Этот метод не использует сериализацию.

Ответ 2

Шаблон Memento - это шаблон проектирования OO, используемый для хранения предыдущих состояний объекта в памяти. Например, полезно реализовать операцию "Отменить".

Сериализация - это процесс преобразования графа объектов в байтовый массив, чтобы сохранить его на диске или отправить его другому JVM по сети, например. У них мало общего.

Ответ 3

Шаблоны проектирования, поскольку название подразумевает адрес Проблемы с дизайном.

Сериализация - это способ "заморозить" объект.

Таким образом, сериализация может быть механизмом реализации, с помощью которого вы можете реализовать шаблон Memento.

Однако вы можете так же легко реализовать шаблон памяти без использования сериализации.

Ответ 4

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

Strucutre memento:

введите описание изображения здесь

Мемориальный шаблон реализуется с тремя объектами: создателем, смотрителем и памятью.

Создателем является некоторый объект, который имеет внутреннее состояние.

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

Сериализация используется для сохранения состояния объекта. Это не шаблон дизайна. Обратитесь к этому вопросу SE для получения дополнительной информации о Сериализации.

Использование Serializable, отличного от Writing & Чтение объекта в/из файла

Memento pattern может или не может использоваться Serialization. Если объект memento не оставляет JVM или не передается другим службам по удаленным вызовам, память может хранить состояние объекта в памяти без Сериализации. Сохраненный объект может быть использован позже для изменения состояния.

Подробнее см. sourcemaking.