备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。
package com.ceshi18; /** * 原件 */ public class Original { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Original(String value) { this.value = value; } public Memento createMemento(){ return new Memento(value); } public void restoreMemento(Memento memento){ this.value = memento.getValue(); } }
package com.ceshi18; /** * 备忘 */ public class Memento { private String value; public Memento(String value) { this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
package com.ceshi18; //存储 public class Storage { private Memento memento; public Storage(Memento memento) { this.memento = memento; } public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; } }
package com.ceshi18; public class Test { public static void main(String[] args) { // 创建原始类 Original origi = new Original("小鸡"); // 创建备忘录 Storage storage = new Storage(origi.createMemento()); // 修改原始类的状态 System.out.println("初始化状态为:" + origi.getValue()); origi.setValue("老鹰"); System.out.println("修改后的状态为:" + origi.getValue()); // 回复原始类的状态 origi.restoreMemento(storage.getMemento()); System.out.println("恢复后的状态为:" + origi.getValue()); } }
说白了,就是用了一个中间类来存储之前的记录,如果记录需要时间可以用map来存储。