zoukankan      html  css  js  c++  java
  • java实现23种设计模式之备忘录模式

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。

    package com.ceshi18;
    
    /**
     * 原件
     */
    public class Original {
        private String value;
        
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    
        public Original(String value) {
            this.value = value;
        }
    
        public Memento createMemento(){
            return new Memento(value);
        }
        
        public void restoreMemento(Memento memento){
            this.value = memento.getValue();
        }
    }
    package com.ceshi18;
    
    /**
     * 备忘
     */
    public class Memento {
        private String value;
    
        public Memento(String value) {
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    }
    package com.ceshi18;
    
    //存储
    public class Storage {
        
        private Memento memento;
        
        public Storage(Memento memento) {
            this.memento = memento;
        }
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }
    package com.ceshi18;
    
    public class Test {
        
        public static void main(String[] args) {
            
            // 创建原始类
            Original origi = new Original("小鸡");
    
            // 创建备忘录
            Storage storage = new Storage(origi.createMemento());
    
            // 修改原始类的状态
            System.out.println("初始化状态为:" + origi.getValue());
            origi.setValue("老鹰");
            System.out.println("修改后的状态为:" + origi.getValue());
    
            // 回复原始类的状态
            origi.restoreMemento(storage.getMemento());
            System.out.println("恢复后的状态为:" + origi.getValue());
        }
        
    }

    说白了,就是用了一个中间类来存储之前的记录,如果记录需要时间可以用map来存储。

  • 相关阅读:
    CSS选择器
    认识CSS样式
    1003 Max Sum(动态规划)
    Python_oldboy_自动化运维之路(八)
    Python_oldboy_自动化运维之路_全栈考试(七)
    Python_oldboy_自动化运维之路_函数,装饰器,模块,包(六)
    ibm x3550m4 开启cpu高性能模式
    Python_oldboy_自动化运维之路_全栈考试(五)
    Python_oldboy_自动化运维之路(四)
    Python_oldboy_自动化运维之路(三)
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10756695.html
Copyright © 2011-2022 走看看