Java备忘录模式示例:保存与恢复对象状态

需积分: 5 0 下载量 116 浏览量 更新于2024-08-04 收藏 2KB TXT 举报
备忘录模式(Memento Pattern)是行为设计模式的一种,主要用于解决在对象的生命周期中保存其状态以便于恢复的问题。在Java代码示例中,我们看到一个简单的应用场景,它涉及三个类:Originator(原发器)、CareTaker(管理者)和Memento(备忘录)。 1. **Originator**类: - 这是创建并维护状态的对象。在这个例子中,`Originator`类有一个私有变量`state`,表示一个字符串状态。 - `setState`方法允许改变对象的状态,并更新内部状态。 - `createMemento`方法返回一个`Memento`对象,该对象包含了当前的`state`值,用于保存状态。 - `setMemento`方法接受一个`Memento`对象,通过调用其`getState`方法将备忘录中的状态恢复到原发器对象。 2. **Memento**类: - `Memento`是一个轻量级的、不可变的类,它封装了`Originator`的状态。在这个例子中,`state`字段被用来存储原始状态值。 - `Memento`类通常不会暴露它的构造函数,防止外部直接创建实例,从而保持其内部状态不变。 3. **CareTaker**类(或称守护者): - 在本例中,`CareTaker`负责管理和存储`Memento`对象。`CareTaker`有两个主要方法: - `addMemento`:接收一个`Memento`对象并将其添加到管理的列表中。 - `getMemento`:根据索引获取保存的`Memento`,这里使用索引2表示第三个保存的状态。 - `showMemento`:显示当前所有的备忘录,用于查看保存的状态历史。 在`main`方法中,首先创建一个`Originator`实例并设置其状态为"1024"。然后,通过调用`createMemento`方法创建一个备忘录,并将其添加到`CareTaker`中。接着改变`Originator`状态至"2048"、"4096",每次操作后都创建新的备忘录。`CareTaker`确保每个状态变化都被保存。最后,通过`CareTaker`获取第二个保存的状态(索引2),将其设置回`Originator`,并打印出根据此备份恢复后的状态。 备忘录模式的核心思想是让对象自身不能直接访问其内部状态,而是通过一个独立的备忘录来维护。这有助于实现状态的隔离和一致性,同时也便于实现状态的撤销、重做等功能。这种模式常用于图形用户界面(GUI)的撤销操作,如文本编辑器、绘图软件等,以及游戏中的存档功能。