备忘录模式

描述

该模式又被称为“快照模式”。

作用:
若有一个需求:用户可撤销某个函数的执行结果,回到上一步(类似于文本编辑时的Ctrl+Z),则可用到备忘录模式。

代码实现示例

/**用户**/
public class User{

    private String state;

    public void setState(String state) {this.state = state;}

    public String getState() {return state;}
    /**创建备忘录**/
    public Memento createMemento() {
        return new Memento(state);
    }
    /**根据备忘录恢复到以前的状态**/
    public void restoreMemento(Memento m) {this.setState(m.getState());}

}
/**备忘录**/
public class Memento{
   int state;
}
/**备忘录管理**/
public class MementoBook{
    List<Memento> memList;

    public void setMemento(Memento m) {memList.add(m);}

    public Memento getCurrentMemento() {return memList.get(memList.size());}
    
    public Memento popupMemento() {
        Memento memento = memList.get(memList.size());
        memList.remove(memList);
        return memento;
    }
}

可以配合原型模式,当用户状态需要备份时,将当前用户的属性clone并保存下来。待恢复时用这份clone记录即可。

实际应用场景

FAQ

Last Updated:
Contributors: dongyz8