UML类图
应用场景
顾名思义,在需要对某对象的属性进行备份时常使用备忘录模式,使用备忘录模式的好处在于客户端无需耦合备份类,客户端只需关心何时创建备份,何时恢复备份。
代码实现
被备份的对象
/**
*
* 被备份的对象
*/
public class Originator {
private String state; //被备份的属性
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento createMemento(){
return new Memento(state);
}
public void setMemento(Memento memento){
this.state = memento.getState();
}
}
备份类,其中保存了该备份的属性
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 Client {
public static void main(String[] args) {
Originator o = new Originator();
o.setState("on");
//创建备份
Caretaker c = new Caretaker();
c.setMemento(o.createMemento());
//需要恢复备份直接调用如下
o.setMemento(c.getMemento());
}
}