美文网首页
备忘录模式

备忘录模式

作者: 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