版权声明:Leo.All Rights Reserved. https://blog.csdn.net/qq_41113081/article/details/89705314
发起人 即需要备忘的类
/**
* 发起人 即需要备忘的类
*/
public class Originator {
/**
* 需要保存的状态 可能有多个
*/
private String state;
/**
* 备忘当前状态
*
* @return 备忘录对象
*/
public Memento CreateMemento() {
return new Memento(state);
}
/**
* 使用备忘录恢复数据
*
* @param memento
*/
public void setMemento(Memento memento) {
this.state = memento.getState();
}
@Override
public String toString() {
return "当前状态 : " + state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
备忘录 用于保存某个事物的状态信息
/**
* 备忘录类
*/
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 Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
测试主类
/**
* 客户端
*/
public class Main {
public static void main(String[] args) {
Originator originator = new Originator();
originator.setState("状态 1");
System.out.println(originator);
Caretaker caretaker = new Caretaker();
//此处保存当前状态 用于后续的还原
caretaker.setMemento(originator.CreateMemento());
originator.setState("状态 2");
System.out.println(originator);
//恢复之前的状态
originator.setMemento(caretaker.getMemento());
System.out.println(originator);
}
}
输出结果
当前状态 : 状态 1
当前状态 : 状态 2
当前状态 : 状态 1