备忘录模式又叫作快照模式,该模式将当前对象的内部状态保存到备忘录中,以便在需要时能将该对象的状态恢复到原先保存的状态。
备忘录模式提供了一种保存和恢复状态的机制,常用于快照的记录和状态的存储,在系统发生故障或数据发生不一致时能够方便地将数据恢复到某个历史状态。
备忘录模式的核心是设计备忘录类及用于管理备忘录的管理者类,其主要角色如下:
UML设计图如下:
1)Original 原始数据类:
public class Original {
private String value;
public Original(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Memento createMemento() {
return new Memento(value);
}
public void restoreMemento(Memento memento) {
this.value = memento.getValue();
}
}
2)Memento 备忘录类:
public class Memento {
private String value;
public Memento(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
3)Storage 备忘录管理类:
public class Storage {
private Memento memento;
public Storage(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
4)测试备忘录模式:
@Slf4j
public class MementoDemoTest {
public static void main(String[] args) {
Original original = new Original("Jobs");
Storage storage = new Storage(original.createMemento());
log.info("original value : " + original.getValue());
original.setValue("Jordan");
log.info("updated value : " + original.getValue());
original.restoreMemento(storage.getMemento());
log.info("restore value : " + original.getValue());
}
}
?打印结果: