一句话总结
后悔药
内容
备忘录就是存储各个历史状态的快照,使得我们在任何时刻将系统回滚到某一个历史状态。
场景
svn,git的代码回归,word的撤销功能,游戏的存档功能
类图
代码示例
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState() {
return this.state;
}
public void setState(String state) {
this.state = state;
}
}
//发起人
public class Originator {
// 内部状态
private String state;
public String getState() {
return this.state;
}
public void setState(String state) {
this.state = state;
}
// 创建一个备忘录
public Memento createMemento() {
return new Memento(this.state);
}
// 从备忘录恢复
public void restoreMemento(Memento memento) {
this.setState(memento.getState());
}
}
//备忘录管理员
public class Caretaker {
// 备忘录对象
private Memento memento;
public Memento getMemento() {
return this.memento;
}
public void storeMemento(Memento memento) {
this.memento = memento;
}
}
public class Test {
public static void main(String[] args) {
//来一个发起人
Originator originator = new Originator();
//来一个备忘录管理员
Caretaker caretaker = new Caretaker();
//管理员存储发起人的备忘录
caretaker.storeMemento(originator.createMemento());
//发起人从管理员获取备忘录进行回滚
originator.restoreMemento(caretaker.getMemento());
}
}