做做笔记吧....备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
适用场景:
1、保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态;
2、对一个提供对象提供可回滚(rollback)的操作。
/**
* 发起者
* @author zhulin
*
*/
public class Originator {
private String state;//状态
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
//单例创建一个备忘录
public Mementor createMementor() {
return new Mementor(this.getState());
}
//回到某个备忘录中
public void rollBackState(Mementor mementor) {
this.setState(mementor.getState());
}
}
/**
* 备忘录者
* @author zhulin
*
*/
public class Mementor {
private String state;//保存的是发起者的状态
public Mementor(String state) {
this.setState(state);
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
/**
* 备忘录管理者
* @author zhulin
*
*/
public class Caretaker {
private Mementor mementor;
public Mementor getMementor() {
return mementor;
}
public void setMementor(Mementor mementor) {
this.mementor = mementor;
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Originator originator = new Originator();
originator.setState("我存在过去...");
// 保存备忘录
Caretaker caretaker = new Caretaker();
caretaker.setMementor(originator.createMementor());
// 重新设置状态
originator.setState("我存在当前....");
System.out.println(originator.getState());
// 回滚状态
System.out.println("我要回到过去!!!!");
originator.rollBackState(caretaker.getMementor());
System.out.println(originator.getState());
System.out.println("Yes 我回到过去了!!");
}
}