备忘录模式(memento)
行为模式的一种。
意图:
Without violating encapsulation,capture and externalize an object’s internal state so that the object can be restored to this state later.
在不破坏封装的前提下,捕获和外化一个对象的内部状态,这样以后就可以将该对象恢复到原先保存的状态。
结构图

参与者
Memento (SolverState)
Originator(ConstraintSolver)
Caretaker (undo mechanism)
public class Caretaker {
Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
Memento creatMemento(){
return new Memento(state);
}
void setMemento(Memento m){
this.setState(m.getState());
}
@Override
public String toString() {
return "Originator{" +
"state='" + state + '\'' +
'}';
}
}
测试类
public class test {
public static void main(String[] args) {
Originator or = new Originator();
or.setState("s1");
System.out.println("原始状态"+or.toString());
Memento m = or.creatMemento();
System.out.println("开始备份");
Caretaker cr = new Caretaker();
cr.setMemento(m);
or.setState("s2");
System.out.println("修改状态为"+or.toString());
or.setMemento(cr.getMemento());
System.out.println("恢复状态"+or.toString());
}
}
执行结果

参考文档http://www.javier8a.com/itc/bd1/articulo.pdf