设计模式之备忘录模式的学习思考

来源:互联网 发布:ubuntu 查看显卡驱动 编辑:程序博客网 时间:2024/05/16 18:54

每个人都有写便签的习惯,其实这也是保存信息的一种方式,和备忘录差不多,都是提醒自己过去做过的事或者将来要做的事。

备忘录模式(Memento Pattern)保存了一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于设计模式里的行为型模式。

主要的实现形式其实很简单,为了不破坏封装性,我们再单独创建一个类来封装备份信息,然后再创建一个容器类,用来存放信息,以便今后的获取。

代码和注释如下:

import java.util.ArrayList;import java.util.List;//备份类,备份的信息class Memento{    private String state;    public Memento(String state) {        super();        this.state = state;    }    public String getState() {        return state;    }}//被备份类(源类)class Originator{    private String state;    public String getState() {        return state;    }    public void setState(String state) {        this.state = state;    }    public Memento saveStatetoMemento(){        return new Memento(state);    }    public void getStateFromMemento(Memento memento){        state=memento.getState();    }}//存放状态的容器池(添加和获得)class   CareTaker{    private List<Memento> mementorList=new ArrayList<Memento>();    public void add(Memento state){        mementorList.add(state);    }    public Memento get(int index){        return mementorList.get(index);    }}public class MementoPatternDemo {    public static void main(String[] args) {        Originator originator=new Originator();        CareTaker careTaker=new CareTaker();        originator.setState("#1");        originator.setState("#2");        careTaker.add(originator.saveStatetoMemento());        originator.setState("#3");        careTaker.add(originator.saveStatetoMemento());        originator.setState("#4");        System.out.println("当前的状态:"+originator.getState());        originator.getStateFromMemento(careTaker.get(0));        System.out.println("第一次保存的状态:"+originator.getState());        originator.getStateFromMemento(careTaker.get(1));        System.out.println("第二次保存的状态:"+originator.getState());    }}

输出:

当前的状态:#4第一次保存的状态:#2第二次保存的状态:#3

总结:实现的过程是很简单,主要是体会其中封装的思想。

原创粉丝点击