Memento模式与序列化的区别

Mr.*_*sso 15 java serialization design-patterns memento

我正在对Memento模式进行一些研究,我通常是行为模式的新手,而且我的研究让我感到非常困惑.我一直困惑的主要问题之一是Memento Pattern和Serialization之间的差异.

从我可以收集的内容中,两者都可以用来存储物品,并在以后将它们带回来,但我无法找到关于它们之间的主要差异的明确答案,也许我在研究中遗漏了一些东西但我想知道是否有人可以透露两者之间的差异.

谢谢

Mik*_*e Q 15

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

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

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

  • 啊明白了,据我所知,Memento Pattern 的大多数示例似乎都使用对象克隆方法。大多数示例使用对象克隆而不是序列化有什么特别的原因吗? (2认同)

JB *_*zet 8

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

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