设计模式——行为型之备忘录模式
用另一个类来备份实例状态,这样的行为逻辑叫备忘录模式
备忘录模式由3部分组成:
- 原始类,也就是被备份的类,除了成员变量的访问接口,还有需要提供创建备份和恢复的接口
- 备忘录类,备份原始类状态的类
- 管理者类,负责存储和获取备份的类
原始类:
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 restore(Memento memento){
this.state = memento.getState();
}
public void doSth(){
System.out.println(state);
}
}
备忘录类:
public class Memento {
//没有set,因为是备份所以不需要修改备份的内容,省的破坏封装
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
管理者类:
public class CareTaker {
private Memento memento;
public CareTaker(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
使用:
public static void main(String[] args) {
final Originator originator = new Originator();
originator.setState("state1");
originator.doSth();
final Memento memento = originator.createMemento();
final CareTaker careTaker = new CareTaker(memento);
originator.setState("state2");
originator.doSth();
originator.restore(careTaker.getMemento());
originator.doSth();
}
state1
state2
state1