备忘录模式很简单,一句话,就是可以保存信息,在必要的时候对象可以回到之前的状态。
code:配合注释可以看明白(大神叫这种实现为白箱实现)
class Memento {// 这个就是备忘录,存储信息用的,相当于一个小本本
private String state;
public Memento() {
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
class Person {// 人的信息
private String state=null;// 当前状态
private Memento memento=null;// 当前备忘录中的信息
private Memento createMemento() {
Memento m = new Memento();// 创建备忘录
m.setState(state);// 获取人当前的状态
return m;
}
public void restoreMemento() {
if (memento == null) {
System.err.println("您的备忘录为空");
return;
}
this.state = memento.getState();// 把人的状态置换为备忘录的状态
}
public String getState() {// 返回当前状态
return state;
}
public void setState(String state) {// 设置状态
if (this.state == null) {
this.state = state;
} else {
memento = this.createMemento();
this.state = state;
}
}
public Memento getMemento() {// 获取备忘录信息
return memento;
}
}
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.setState("on");
p.restoreMemento();
System.err.println(p.getState());
p.setState("off");
System.err.println(p.getState());
p.restoreMemento();
System.err.println(p.getState());
p.setState("doing");
System.err.println(p.getState());
p.restoreMemento();
System.err.println(p.getState());
}
}
打印信息:
您的备忘录为空
on
off
on
doing
on
专业人士是这样写的(大神叫这种实现是黑箱实现)。代码如下:
code:
不想写了,差不了太多,备忘录还有各种变种,比如自述历史模式,自己想了解的,可以百度哟。
下一篇走起。