备忘录模式
基础概念
什么是备忘录模式?
答案: 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复到原先保存的状态。
使用场景:
- 需要保存对象的历史状态
- 需要实现撤销功能
优点:
- 提供状态恢复机制
- 实现封装
缺点:
- 消耗资源
实现方式
java
// 备忘录
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
// 发起人
public class Originator {
private String state;
public void setState(String state) {
this.state = state;
}
public String getState() {
return state;
}
public Memento saveStateToMemento() {
return new Memento(state);
}
public void getStateFromMemento(Memento memento) {
state = memento.getState();
}
}
// 管理者
public class Caretaker {
private List<Memento> mementoList = new ArrayList<>();
public void add(Memento memento) {
mementoList.add(memento);
}
public Memento get(int index) {
return mementoList.get(index);
}
}
// 使用
Originator originator = new Originator();
Caretaker caretaker = new Caretaker();
originator.setState("状态1");
caretaker.add(originator.saveStateToMemento());
originator.setState("状态2");
caretaker.add(originator.saveStateToMemento());
originator.getStateFromMemento(caretaker.get(0));
System.out.println(originator.getState()); // 状态1练习题
- 备忘录模式的应用场景?
- 如何优化备忘录的存储?
- 备忘录模式和原型模式的区别?