设计模式之Memento模式

来源:互联网 发布:冒险岛登陆器源码 编辑:程序博客网 时间:2024/05/16 15:10

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
适用场合:比较适合用于功能比较复杂,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时。
这里写图片描述
首先定义一个Originator(发起人)类

public class Originator {    private String state;//需要保存的属性(可以定义多个)    public void setState(String state){        this.state=state;    }    public String getState(){        return state;    }    //创建备忘录,将当前需要保存的信息导入并实例化一个Memento对象    public Memento createMemento(){        return new Memento(state);    }    //恢复备忘录    public void setMemento(Memento memento){        state=memento.getState();    }    public void show(){        System.out.println("state="+state);    }}

定义一个Memento(备忘录)类

public class Memento {    private String state;    //通过构造方法将相关数据导入    public Memento(String state){        this.state=state;    }    public String getState(){        return state;    }}

然后定义一个Caretaker(管理者)类,封装Memento

public class Caretaker {    private Memento memento;    //设置备忘录    public void setMemento(Memento memento){        this.memento=memento;    }    //得到备忘录    public Memento getMemento(){        return memento;    }}

客户端代码

    public static void main(String[] args) {        //备忘录模式        Originator originator=new Originator();        originator.setState("on");//初始状态为on        originator.show();        Caretaker caretaker=new Caretaker();        caretaker.setMemento(originator.createMemento());        originator.setState("off");//状态改变为off        originator.show();        //恢复原来状态        originator.setMemento(caretaker.getMemento());        originator.show();}
0 0
原创粉丝点击