什么是备忘录模式
备忘录模式特别好理解,就是记录下当前状态,然后在将来某个时刻,执行恢复操作,还原到当前状态。
这是提前备份将来还原的思想,在生活中非常的常见。比如,操作系统装好以后,通常会备份个镜像文件,如果将来某一天系统出问题了,就拿镜像文件恢复系统。
明白了要做什么,就要考虑怎么去做,针对不同业务场景,实现方案是多种多样的。所有方案的核心点就一个,备份!
具体到代码层面,备份途径有很多选择,数据库、硬盘、甚至缓存、内存,都可以充当备份媒介。
怎么方便怎么做,怎么简单怎么来!
设计与实现
在应用程序中,备忘录模式的出现频率相对还是比较高的。只要是有备份还原的场景出现,就有备忘录模式的用武之地,常见的“撤销”操作就是。
很多备份还原的业务场景都是临时的,不需要保证永久的可恢复性,因此,只需要借助内存备份信息即可。复杂一些的业务场景,如需持久备份的,就需借助数据库、文件等能够持久化的媒介。
从代码层面看,备忘录模式的设计与实现,没什么特别的,就是写出个备忘逻辑而已:
// 目标对象,state信息需要备忘
public class Originator {
private String state;
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public Memento createMemento() {
return new Memento(state);
}
public void restoreMemento(Memento memento) {
this.setState(memento.getState());
}
}
// 备忘录
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
// 测试方法
public static void main(String[] args) {
Originator originator = new Originator();
originator.setState("状态S0");
Memento memento = originator.createMemento(); // 备忘
originator.setState("状态S1");
originator.setState(memento.getState());// 还原之前的状态
System.out.println(originator.getState());
}
备忘录模式就像个“月光宝盒”,可以回到过去,想“后悔”的时候真心管用。
同时,它的变化也是多种多样,真想备忘,程序也不会设计的如此简单,备忘数据及备忘深度也会更加复杂。
理解备忘录模式的含义即可,设计实现上没有定式,怎么方便怎么严谨就怎么来。