java 备忘录模式

来源:互联网 发布:mac dock栏怎么透明 编辑:程序博客网 时间:2024/05/06 00:47

做做笔记吧....

备忘录模式(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 我回到过去了!!");}}