<设计模式19>备忘录模式

来源:互联网 发布:李雪儿的网络歌曲 编辑:程序博客网 时间:2024/05/17 22:04

备忘录(Memento)模式是是一种行为模式,常用来保存一种状态。当状态被修改的时候,可以通过备忘录模式来恢复状态,就好比打游戏一样,我们可以进行保存记录,保存后我们可以随时调取记录来恢复到以前的数据。

角色介绍:

Originator:源数据,里面是需要保存的数据值,在这里可以创建备忘录,备份和回复数据。

Memento:备忘录类,用于存储Originator的数据状态。

Caretaker:负责存放备忘录,但是不能对备忘录的内容进行修改,可以把备忘录传递给其他对象。


使用实例:

Originator:

/** * 源数据 * @author xiaoqi * */public class Originator {private int value;public int getValue() {return value;}public void setValue(int value) {this.value = value;}//创建备忘录public Memento createMemento(){return new Memento(value); }//恢复数据public void restore(Memento memento){this.value = memento.getValue();}}
Memento:

/** * 备忘录 * @author xiaoqi * */public class Memento {private int value;public Memento(int value){this.value = value;}public int getValue(){return value;}}

Caretaker:

/** * 负责存储备忘录,但是不提供修改操作 * @author xiaoqi * */public class Caretaker {private Memento memento;public void save(Memento memento){this.memento = memento;}public Memento getMemento(){return memento;}}
使用测试:

public class MementoTest {public static void main(String[] args) {Originator originator = new Originator();//设置数据int o = 11;System.out.println("备份的值:"+o);<span style="color:#ff0000;">originator.setValue(o);</span>Caretaker caretaker = new Caretaker();<span style="color:#ff0000;">caretaker.save(originator.createMemento());//创建caretaker对象保存备忘录</span>//修改数据originator.setValue(22222);System.out.println("修改的值:"+22222);//恢复数据<span style="color:#ff0000;">originator.restore(caretaker.getMemento());</span>int i = originator.getValue();System.out.println("恢复后的值:"+i);}}

结果:

备份的值:11

修改的值:22222

恢复后的值:11


通过这种模式,很简单的达到了恢复保存的功能。

0 0
原创粉丝点击