备忘录模式

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());
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容