王争《设计模式之美》学习笔记
备忘录模式的原理与实现
- 备忘录模式,也叫快照(Snapshot)模式,英文翻译是 Memento Design Patte。
- 在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。
- 这个模式的定义主要表达了两部分内容:
- 一部分是,存储副本以便后期恢复。这一部分很好理解。
- 另一部分是,要在不违背封装原则的前提下,进行对象的备份和恢复。这部分不太好理解。
文中举例
- 用户输入文本时,程序将其追加存储在内存文本中;
- 用户输入“:list”,程序在命令行中输出内存文本的内容;
- 用户输入“:undo”,程序会撤销上一次输入的文本,也就是从内存文本中将上次输入的文本删除掉。
public class InputText {
private StringBuilder text = new StringBuilder();
public String getText() {
return text.toString();
}
public void append(String input) {
text.append(input);
}
public void setText(String text) {
this.text.replace(0, this.text.length(), text);
}
}
public class SnapshotHolder {
private Stack<InputText> snapshots = new Stack<>();
public InputText popSnapshot() {
return snapshots.pop();
}
public void pushSnapshot