在Java中,备忘录模式(Memento Design Pattern)用于捕获一个对象的内部状态并在该对象之外保存这个状态。备忘录模式允许在后续需要时将对象恢复到之前保存的状态,而不会暴露其内部结构。
备忘录模式包含以下主要角色:
-
发起人(Originator):负责创建备忘录对象,用于保存和恢复其状态。
-
备忘录(Memento):存储发起人对象的内部状态。
-
管理者(Caretaker):负责保存备忘录对象,并在需要时将其提供给发起人恢复状态。
下面是一个简单的示例:
假设有一个编辑器类(Originator),用于编辑文本内容,并有一个备忘录类(Memento)用于保存编辑器的状态,以及一个备忘录管理类(Caretaker)用于管理备忘录。
首先,我们创建备忘录类(Memento):
public class Memento {
private String state;
public Memento(String state) {
this.state = state;
}
public String getState() {
return state;
}
}
然后,我们创建发起人类(Originator),它可以创建备忘录对象,并根据备忘录恢复状态:
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 restoreStateFromMemento(Memento memento) {
state = memento.getState();
}
}
接下来,我们创建备忘录管理类(Caretaker),它可以保存和获取备忘录对象:
import java.util.ArrayList;
import java.util.List;
public class Caretaker {
private List<Memento> mementos = new ArrayList<>();
public void addMemento(Memento memento) {
mementos.add(memento);
}
public Memento getMemento(int index) {
return mementos.get(index);
}
}