纪念图案和序列化之间的区别

我正在对记忆模式进行一些研究,我通常是行为模式的新手,随着我的研究,我一直很困惑。我一直感到困惑的主要事情之一是Memento模式和序列化之间的差异。

从我所能收集到的信息来看,两者都可以用来存储物品,并在以后把它们带回来,但我无法找到一个关于它们之间关键区别的明确答案,也许我在研究中遗漏了一些东西,但我想知道是否有人可以阐明两者之间的差异。

谢谢


答案 1

通常,Memento 模式用于实现回滚/保存点支持。例如,我可能想要在某个时间点标记对象的状态,执行一些工作,然后决定将该对象恢复到标记的点。

Memento模式的实现可以使用序列化,这将涉及将对象的内容保存到byte[]中并保存在内存中或写入磁盘。还原时,将从序列化副本重建对象的内容。

相反,我可以通过在内存中克隆对象并保留对副本的引用,然后在对象需要还原时将状态复制回去来实现Memento模式。此方法不使用序列化。


答案 2

Memento 模式是一种 OO 设计模式,用于在内存中保留对象的先前状态。例如,实现“撤消”操作很有用。

例如,序列化是将对象图转换为字节数组的过程,以便将其保存在磁盘上,或通过网络将其发送到另一个JVM。他们没有太多的共同点。