Java中如何应用备忘录模式实现对象状态保存与恢复?

2026-05-25 23:040阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1599个文字,预计阅读时间需要7分钟。

Java中如何应用备忘录模式实现对象状态保存与恢复?

使用Word时,系统会提供撤销功能,这几乎是每个人都会用到的功能。但在实际开发中,可能会遇到一个复杂的对象,当修改其中某个属性时,会涉及一系列复杂操作。

无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤销的功能,可以快速恢复到更新前的状态。提供该功能的模式也正是今天的主题——备忘录模式。

一、概念理解

书上备忘录的解释是,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

Java中如何应用备忘录模式实现对象状态保存与恢复?

其实也就是在一个对象之外再额外的增加一个副本对象,每当我们在对象上更改一些属性以后就构建一个副本,并把副本存放在一个队列中,每当回退该对象的时候就从副本中恢复数据。

很显然需要三个角色:原对象、副本对象、存放副本的队列。

也即书上的三个角色定义:

Originator(发起人角色):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能;即原对象。

Memento(备忘录角色):用于存储Originator的内部状态,且可以防止Originator以外的对象进行访问;即副本对象。

阅读全文

本文共计1599个文字,预计阅读时间需要7分钟。

Java中如何应用备忘录模式实现对象状态保存与恢复?

使用Word时,系统会提供撤销功能,这几乎是每个人都会用到的功能。但在实际开发中,可能会遇到一个复杂的对象,当修改其中某个属性时,会涉及一系列复杂操作。

无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤销的功能,可以快速恢复到更新前的状态。提供该功能的模式也正是今天的主题——备忘录模式。

一、概念理解

书上备忘录的解释是,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

Java中如何应用备忘录模式实现对象状态保存与恢复?

其实也就是在一个对象之外再额外的增加一个副本对象,每当我们在对象上更改一些属性以后就构建一个副本,并把副本存放在一个队列中,每当回退该对象的时候就从副本中恢复数据。

很显然需要三个角色:原对象、副本对象、存放副本的队列。

也即书上的三个角色定义:

Originator(发起人角色):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能;即原对象。

Memento(备忘录角色):用于存储Originator的内部状态,且可以防止Originator以外的对象进行访问;即副本对象。

阅读全文