java - Memento 模式和序列化之间的区别

标签 java design-patterns serialization memento

我正在对 Memento 模式进行一些研究,我通常对行为模式不熟悉,并且在我的研究中我一直很困惑。我一直感到困惑的主要事情之一是备忘录模式和序列化之间的区别。

据我所知,两者都可用于存储对象并在以后将它们带回,但我无法就它们之间的主要区别找到明确的答案,也许我错过了一些东西在我的研究中,但我想知道是否有人可以阐明两者之间的区别。

谢谢

最佳答案

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

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

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

关于java - Memento 模式和序列化之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076772/

相关文章:

mysql - PG::Error : 结果已被清除 Rails 序列化

database - 输入流不是有效的二进制格式。

java - 如何在.NET 中使用 DES 算法?

Java 服务器总是返回相同的消息

objective-c - 委托(delegate)引用它作为委托(delegate)的对象是否是一种不好的做法?

ruby-on-rails - Ruby on Rails API : computed attribute pattern best practice

java - 如何从 BroadcastReceiver 更新 fragment 选项卡?

java - 启动 MQ Listener 时出现 MQJCA1025 错误

java - 如何使用设计模式代替开关盒

c# - OData WebApi V4 .net - 自定义序列化