美文网首页
备忘录模式

备忘录模式

作者: tdeblog | 来源:发表于2016-08-12 13:10 被阅读0次

1.clone方式#

本文目前只介绍备忘录clone方式,多状态模式和多备忘录模式留做用到时再做记录。

1.1 定义##

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

1.2 类图##

类图

1.3实现##

1.3.1发起人角色类###

public class Originator implements Cloneable {
    private Originator backup;

    private String state = "";
    private ArrayList<Object> arrayList = new ArrayList<Object>();

    public String getState() {
        return this.state;
    }

    public void setState(String _state) {
        this.state = _state;
    }

    public void setArrayList(Object item) {
        this.arrayList.add(item);
    }

    public ArrayList<Object> getArrayList() {
        return this.arrayList;
    }

    public void restoreArrayList(ArrayList<Object> items) {
        this.arrayList.clear();
        for(Object item : items) {
            this.arrayList.add(item);
        }
    }

    public void createMemtor() {
        this.backup = this.clone();
    }

    public void restoreMemtor() {
        this.setState(this.backup.getState());
        this.restoreArrayList(this.backup.arrayList);
    }

    public Originator clone() {
        try {
            Originator originator = (Originator) super.clone();
            originator.arrayList = (ArrayList<Object>) this.arrayList.clone();
            return originator;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}

1.3.2客户端类###

public class Client {
    public static void main(String args[]) {
        Originator originator = new Originator();
        originator.setArrayList("hehe");
        originator.createMemtor();
        System.out.println(originator.getArrayList());
        originator.setArrayList("heihei");
        System.out.println(originator.getArrayList());
        originator.restoreMemtor();
        System.out.println(originator.getArrayList());
    }
}

相关文章

网友评论

      本文标题:备忘录模式

      本文链接:https://www.haomeiwen.com/subject/sktesttx.html