目录
什么是备忘录模式
保存对象某一时刻的状态,并在需要时恢复之前保存的状态。如字面所述,备忘录模式就是一个对象的备份模式。
为什么要用备忘录模式
备忘录模式运用于需要备份并恢复状态数据的场景。甚至可以保存多个保存点状态,并指定恢复到相应的节点。
备忘录模式组成
备忘录角色
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;
}
/**
* 创建一个备忘录
* @return Memento
*/
public Memento createMemento() {
return new Memento(this.state);
}
/**
* 恢复一个备忘录
* @param memento memento
*/
public void restoreMemento(Memento memento) {
this.setState(memento.getState());
}
}
备忘录管理员角色
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
测试驱动
public class Client {
public static void main(String[] args) {
Originator originator = new Originator();
originator.setState("1");
System.out.println(String.format("1状态:%s",originator.getState()));
Caretaker caretaker = new Caretaker();
caretaker.setMemento(originator.createMemento());
originator.setState("2");
System.out.println(String.format("2状态:%s",originator.getState()));
originator.restoreMemento(caretaker.getMemento());
System.out.println(String.format("恢复状态:%s",originator.getState()));
}
}