备忘录模式
描述
备忘录模式用于将对象的状态进行保存为备忘录,以便在需要时可以从备忘录会对象状态;其核心点在于备忘录对象及其管理者是独立于原有对象之外的。
常用于需要回退、撤销功能的场景。
组件
- 原有对象(包含自身业务属性 + 创建备忘录 + 从备忘录恢复)
java
public class Originator {
private String state;
public void setState(String state) {
this.state = state;
System.out.println("Setting state to: " + state);
}
public String getState() {
return state;
}
public Memento createMemento() {
return new Memento(state);
}
public void recoverFromMemento(Memento memento) {
state = memento.getState();
}
}
- 备忘录对象(包含原对象需要备份、恢复的属性)
java
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
- 备忘录管理对象
java
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
使用
java
public class Sample {
public static void main(String[] args) {
Originator originator = new Originator();
Caretaker caretaker = new Caretaker();
originator.setState("State #1");
// 原对象创建备忘录对象 并交给备忘录管理对象
caretaker.setMemento(originator.createMemento());
// 原有对象基于 来自备忘录管理对象的 备忘录对象 进行恢复
originator.recoverFromMemento(caretaker.getMemento());
System.out.println("Restored State: " + originator.getState());
}
}