备忘录模式
描述
该模式又被称为“快照模式”。
作用:
若有一个需求:用户可撤销某个函数的执行结果,回到上一步(类似于文本编辑时的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记录即可。