备忘录模式(行为型)
设计模式的3个分类:创建型模式、结构型模式、行为型模式
备忘录模式定义:
备忘录模式是一种行为型设计模式,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
备忘录模式图示:

代码实现:
/**
* 原始类
*/
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
//保存状态到备忘录对象
public Memento saveStateMemento() {
return new Memento(state);
}
//通过备忘录对象,恢复状态
public void getStateFromMemento(Memento memento) {
state = memento.getState();
}
}
/**
* 备忘录类
*/
class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
/**
* 守护者类,负责保存多个"备忘录对象"
*/
public class CareTaker {
//在List集合中会有很多的备忘录对象
private List<Memento> mementoList = new ArrayList<>();
public void add(Memento memento) {
mementoList.add(memento);
}
//获取到第index个Originator的备忘录对象
public Memento get(int index) {
return mementoList.get(index);
}
}
/**
* 测试
*/
public class MementoPatternDemo {
public static void main(String[] args) {
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState("State 1 ... ");//此状态没有被保存,因此也不能被恢复
originator.setState("State 2 ... ");
careTaker.add(originator.saveStateMemento());
originator.setState("State 3 ...");
careTaker.add(originator.saveStateMemento());
originator.setState("State 4 ...");
careTaker.add(originator.saveStateMemento());
System.out.println("当前的状态是: " + originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println("恢复到保存到第1个状态:" + originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println("恢复到保存到第2个状态:" + originator.getState());
originator.getStateFromMemento(careTaker.get(2));
System.out.println("恢复到保存到第3个状态:" + originator.getState());
}
}
//输出
当前的状态是: State 4 ...
恢复到保存到第1个状态:State 2 ...
恢复到保存到第2个状态:State 3 ...
恢复到保存到第3个状态:State 4 ...
参考:
https://www.tutorialspoint.com/design_pattern/memento_pattern.htm

浙公网安备 33010602011771号