【JAVA设计模式】18.备忘录模式
顾名思义,备忘录模式用于当信息发生改变时回溯回之前存在的某一个版本。
UML图:
备忘录类Memento,提供修改和获得内部信息的方法:
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;
}
}
备忘录存放类CareTaker,提供了备忘录的赋值和取值方法,用于存储和回溯备忘录:
class Caretaker {
private Memento memento;
public Memento retrieveMemento() {
return this.memento;
}
public void saveMemento(Memento memento) {
this.memento = memento;
}
}
用户操作的源对象,提供了生成备忘录以及恢复备忘录的方法:
class Originator {
private String state;
public Memento createMemento() {
return new Memento(state);
}
public void restoreMemento(Memento memento) {
this.state = memento.getState();
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
System.out.println("当前状态:" + this.state);
}
}
客户端使用:客户使用源对象,当对象需要记录至备忘录时,调用createMemento方法生成备忘录,并将其记录至Caretaker内,当需要恢复至备忘录状态时调用restoreMemento方法:
Originator o = new Originator();
Caretaker c = new Caretaker();
o.setState("On");
c.saveMemento(o.createMemento());
o.setState("Off");
o.restoreMemento(c.retrieveMemento());
JAVA代码:https://github.com/zhuaizhuaixi/design-pattern/tree/master/src/designpattern/behavioral/memento