备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象外部保存这一状态,这样就可以将对象恢复到以前的状态。
这个模式中主要有三个对象 Originator(发起者),Memento(备忘录),careTaker(保管者),Memento对于Originator暴露宽接口,能够访问其内部属性,而对于Caretaker暴露窄接口,只能持有和提供Memento对象。
这一模式在游戏,事务管理,文本编辑工具中时常用到
public class Originator {
private String state;
public Originator(String state) {
this.state = state;
}
public void setMemento(Memento memento) {
this.state = memento.getState();
}
public Memento createMemento() {
return new Memento(state);
}
public static void main(String[] args) {
Originator originator = new Originator("originator");
Memento memento = originator.createMemento();
Caretaker caretaker = new Caretaker();
caretaker.setMemento(memento);
originator.setMemento(caretaker.getMemento());
}
}
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}