当前位置: 首页 > 面试题库 >

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

马丰
2023-03-14
问题内容

我正在对Memento模式进行一些研究,而我通常对行为模式还是陌生的,而随着我的研究,我变得非常困惑。我一直感到困惑的主要事情之一是Memento模式和序列化之间的差异。

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

谢谢


问题答案:

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

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

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



 类似资料:
  • 本文向大家介绍Java中的序列化和外部化之间的区别,包括了Java中的序列化和外部化之间的区别的使用技巧和注意事项,需要的朋友参考一下 序列化和外部化都是将对象转换为流字节并将字节流存储在数据库或内存中的过程。实现java.io.Serializable接口的类可以序列化。另一方面,根据应用程序的要求,外部化用于自定义序列化。外部化扩展了java.io.Serializable。  序号 键 序列

  • 本文向大家介绍模糊化和反模糊化之间的区别,包括了模糊化和反模糊化之间的区别的使用技巧和注意事项,需要的朋友参考一下 模糊化 模糊化可以被定义为将清晰集转换为模糊集或将模糊集转换为模糊集的过程。基本上,此操作会将准确的明晰输入值转换为语言变量。 模糊化 模糊化可以定义为将模糊集简化为清晰集或将模糊成员转换为清晰成员的过程。 我们已经研究了模糊化过程涉及从清晰数量到模糊数量的转换。在许多工程应用中,必

  • 问题内容: 策略模式和命令模式有什么区别?我也在寻找Java中的一些示例。 问题答案: 通常,命令模式用于使对象脱离 需要完成的工作 -进行操作及其参数并将其包装在要记录的对象中,以备撤消,发送到远程站点等。随着时间的流逝,它们将往往是大量不同的Command对象,它们会通过系统中的给定点,并且Command对象将包含描述所需操作的各种参数。 另一方面,策略模式用于指定应 该如何做 ,并插入到较大

  • 问题内容: 我正在实现撤消/重做功能,这需要我使用记忆模式。 局部程序的流程:“ …该程序然后使用Memento模式存储先前的Vector,然后将新创建的对象添加到Vector。此后,用户可以选择show命令来显示Vector内部的内容。 ,他还可以输入undo命令来还原,还原可以重复进行,直到还原到原始状态为止。” 从我的研究中,我知道将会有一个创始者,纪念品和看守。 这是我的看守程序 不幸的是

  • 本文向大家介绍Android中可打包和可序列化之间的区别,包括了Android中可打包和可序列化之间的区别的使用技巧和注意事项,需要的朋友参考一下 本示例演示了Android中可打包和可序列化之间的区别 可序列化 可序列化是一个可标记的接口,或者我们可以将其称为空接口。它没有任何预先实现的方法。可序列化将对象转换为字节流。因此,用户可以在一个活动到另一个活动之间传递数据。可序列化的主要优点是创建和

  • 本文向大家介绍C++设计模式之备忘录模式(Memento),包括了C++设计模式之备忘录模式(Memento)的使用技巧和注意事项,需要的朋友参考一下 当我们在实际应用中需要提供撤销机制,当一个对象可能需要再后续操作中恢复其内部状态时,就需要使用备忘录模式。其本质就是对象的序列化和反序列化的过程,支持回滚操作。 作用 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样