#备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。
public class MemorandumTest {
public static void main(String[] args) {
Starter starter = new Starter();
Manager manager = new Manager();
starter.setState("S0");
System.out.println("初始状态:" + starter.getState());
manager.setMemento(starter.createMemorandum()); //保存状态
starter.setState("S1");
System.out.println("新的状态1:" + starter.getState());
starter.setState("S2");
System.out.println("新的状态2:" + starter.getState());
starter.restoreMemento(manager.getMemento()); //恢复状态
System.out.println("恢复状态:" + starter.getState());
}
}
// 备忘录
class Memorandum{
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memorandum(String state) {
this.state = state;
}
}
//发起人
class Starter {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
Memorandum createMemorandum(){
return new Memorandum(state);
}
public void restoreMemento(Memorandum m) {
this.setState(m.getState());
}
}
//管理者
class Manager{
private Memorandum memento;
public void setMemento(Memorandum m) {
memento = m;
}
public Memorandum getMemento() {
return memento;
}
}
由此可以延申,当前Manager的备忘录是一个,以list集合设置,可以保存多种状态,可随时恢复至任何一种状态。
参考资料:
1.http://c.biancheng.net/view/1400.html
代码地址:https://gitee.com/zhoujie1/design-mode-and-principle.git