第20章:备忘录模式-撤销功能的实现
定义:
备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
象棋中后退一步
结构:
代码实现:
//原发器:创建备忘录,存储内部状态
public class Originator {
private String state;
public Originator() {
}
// 创建一个备忘录对象
public Memento createMemento() {
return new Memento(this);
}
// 根据备忘录对象恢复原发器状态
public void restoreMemento(Memento m) {
state = m.state;
}
public void setState(String state) {
this.state = state;
}
public String getState() {
return this.state;
}
}
//备忘录类:默认可见性,包内可见,存储原发器内部状态
class Memento {
public String state;
public Memento(Originator o) {
state = o.getState();
}
public void setState(String state) {
this.state = state;
}
public String getState() {
return this.state;
}
}
//负责人:保存备忘录,不能修改对象
public class Caretaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
应用实例:
//象棋棋子类:原发器
class Chessman {
private String label;
private int x;
private int y;
public Chessman(String label, int x, int y) {
this.label = label;