定义
备忘录模式提供了一种弥补真实世界的方法。在不破坏封装的前提下,捕获一个对象的内部状态并在该对象之外保存这个状态。以便对象可以恢复原先保存的状态。
备忘录模式的角色
- Originator发起人角色:记录当前的内部状态,负责创建和恢复备忘录数据。
- Memento备忘录角色:负责存储Originator发起人的内部状态。
- Caretaker备忘录管理员角色:对备忘录进行管理、保存和提供备忘录。
代码实现
备忘录Memento.java
public class Memento {
private String state = "";
public Memento(String state){
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
发起人Originator.java
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(this.state);
}
//恢复一个备忘录
public void restoreMemento(Memento memento){
this.setState(memento.getState());
}
}
备忘录管理员Caretaker.java
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
备忘录模式的使用场景
- 需要保存和恢复数据的相关场景。
- 提供一个可以回滚的操作。
- 需要监控的副本场景。
- 数据库连接的事务管理就是用备忘录模式。