Java设计模式-20、备忘录模式-撤销功能的实现

第20章:备忘录模式-撤销功能的实现

定义:

备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

象棋中后退一步

Java设计模式-20、备忘录模式-撤销功能的实现_第1张图片

Java设计模式-20、备忘录模式-撤销功能的实现_第2张图片

结构:

Java设计模式-20、备忘录模式-撤销功能的实现_第3张图片

代码实现:

//原发器:创建备忘录,存储内部状态
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;
    }
}

应用实例:

Java设计模式-20、备忘录模式-撤销功能的实现_第4张图片

//象棋棋子类:原发器
class Chessman {
   
    private String label;
    private int x;
    private int y;

    public Chessman(String label, int x, int y) {
   
        this.label = label;
        

你可能感兴趣的:(Java设计模式,java,设计模式)