备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
备忘录模式Demo:
/** * 2018年4月1日下午11:54:24 */ package com.Designpattern; /** * @author xinwenfeng * */ public class TestMemento { /** * @param args */ public static void main(String[] args) { Originator o = new Originator(); o.setState("折纸到第三步成功"); o.show(); MyCaretaker c = new MyCaretaker(); MyMemento m = o.CreateMemento();//创建备忘录 c.setMemento(m);//交给管理者 o.setState("折纸到第四部错误"); o.show(); o.SetMemento(c.getMemento());//从管理者拿到备忘录并回滚 o.show(); } } //备忘录 class MyMemento{ private String state; public MyMemento(String s) { state = s; } public String getState() { return state; } } //管理者 class MyCaretaker{ private MyMemento memento; public MyMemento getMemento() { return memento; } public void setMemento(MyMemento memento) { this.memento = memento; } } class Originator{ private String state;//属性 public String getState() { return state; } public void setState(String state) { this.state = state; } public MyMemento CreateMemento() { return new MyMemento(state);//将当前属性保存,并得到备忘录 } public void SetMemento(MyMemento m) { state = m.getState();//将当前属性设置成备忘录里的 } public void show() { System.out.println("操作:"+state); } }
结果: