• 【设计模式】12.备忘录模式


    备忘录模式

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

    结构图:

    Originator:发起者,创建备忘录来记录内部状态,并可以利用备忘录恢复。

    Caretaker:管理者,负责保存备忘录。

    Memeto:备忘录,记录Originator内部状态。

    例:

    public class Memeto {             // 备忘录
        private String state;
    
        public Memeto(String state) { // 记录数据到备忘录
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    }
    public class Caretaker {   // 管理者
        private Memeto memeto;
    
        public Memeto getMemeto() {     // 获取备忘录
            return memeto;
        }
    
        public void setMemeto(Memeto memeto) {  // 设置备忘录
            this.memeto = memeto;
        }
    }
    public class Originator {  // 发起者
        private String state;
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    
        public Memeto createMemeto(){         // 创建备忘录
            return new Memeto(state);
        }
    
        public void setMemeto(Memeto memeto){  // 恢复备忘录
            this.state=memeto.getState();
        }
    
    }
    public class Test {
        public static void main(String[] args) {
            Originator originator = new Originator();
            originator.setState("状态1");         // 设置初始状态1
            System.out.println("初始状态:" + originator.getState());
    
            Caretaker caretaker = new Caretaker();
            caretaker.setMemeto(originator.createMemeto());  // 利用originator创建初始状态1的备忘录,然后由caretaker负责保存
    
            originator.setState("状态2");        // 更改状态
            System.out.println("更改后的状态:" + originator.getState());
    
            originator.setMemeto(caretaker.getMemeto());   // 恢复保存到备忘录的状态
            System.out.println("恢复初始状态后的状态:" + originator.getState());
        }
    }

    输出:

    初始状态:状态1
    更改后的状态:状态2
    恢复初始状态后状态:状态1
  • 相关阅读:
    禁止页面缓存 移动端
    常见的请求头与响应头介绍
    阮一峰 ES6学习
    禁止页面缩放 移动端
    10月30日学习日志
    11月7日学习日志
    11月6日学习日志
    10月31日学习日志
    11月1日学习日志
    11月9日学习日志
  • 原文地址:https://www.cnblogs.com/jiazhongxin/p/12848995.html
Copyright © 2020-2023  润新知