设计模式(备忘录模式)

备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。它包含以下几类角色:

1、Memento:备忘数据的bean;

2、Originator:发起者,需要备份数据的对象,其备份内容与Memento相同,负责创建一份备份数据,并能够通过备份数据回写状态;

3、Caretaker:保存该备份数据的独享,类似第三方存储;

代码如下:

  • Memento
public class Memento {
    private int state;
    
    public Memento(int state){
        this.state = state;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }
}
  • Originator
public class Originator {
    private int state;
    
    public Originator(){
        this.state = 0;
    }
    
    public Memento createMemento(){
        return new Memento(this.state);
    }
    
    public void setMemento(final Memento memento){
        this.state = memento.getState();
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }
}
  • Caretaker
public class Caretaker {
    private Memento memento;

    public Memento getMemento()
    {
        return memento;
    }

    public void setMemento(final Memento memento)
    {
        this.memento = memento;
    }
}
  • APP 测试类
public class App {

    public static void main(String[] args) {
        Originator ori = new Originator();
        Caretaker cv = new Caretaker();
        ori.setState(1);
        //将状态保存在Caretaker中
        cv.setMemento(ori.createMemento());
        System.out.println(ori.getState());
        ori.setState(2);
        //将Caretaker中的状态回写
        cv.setMemento(cv.getMemento());
        System.out.println(ori.getState());    
    }
}
posted @ 2015-06-15 09:48  Fredric_2013  阅读(159)  评论(0编辑  收藏  举报