1.意图
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态
这样就可以将该对象恢复到原先保存的状态
2.参与者
Memento - 存储对象状态
- 防止原发器以外的其它对象访问备忘录
Originato - 原发器创建一个备忘录,用以记录当前时刻它的内部状态
Caretaker -负责保存好备忘录
-不能对备忘录的对象进行操作或者检测
3.结构
4.代码
public class Memento {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Originato {
private String state;
public Memento createMemento() {
Memento memento = new Memento();
memento.setState(state);
return memento;
}
public void resumeByMemento(Memento memento) {
this.state = memento.getState();
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Caretaker {
Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
public class Client {
public static void main(String[] args) {
Originato o = new Originato();
o.setState("1");
Caretaker c =new Caretaker();
c.setMemento(o.createMemento());
o.setState("2");
o.setState("3");
o.resumeByMemento(c.getMemento());//恢复到一状态
System.out.println(o.getState());
}
}