• Java: Memento Pattern


    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 备忘录模式 Memento Pattern/Snapshot Pattern/Token Pattern
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc MementoIF.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    
    package com.javapatterns.memento;
    
    /**
     *
     *
     * */
    public interface MementoIF {
         /**
          * 
          * 
          * */
        public  void speak();
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 备忘录模式 Memento Pattern/Snapshot Pattern/Token Pattern
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Originator.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    
    package com.javapatterns.memento;
    
    /**
     * 发起人角色
     * @author geovindu
     * @version 1.0
     * */
    public class Originator {
    
    
        /**
         *
         *
         * */
        public Originator()
        {
        }
        /**
         *
         *
         * */
        private String state;
        /**
         *返回一个备份录对象
         *
         * */
        public MementoIF createMemento()
        {
            //System.out.println("备份录开始");
            return new Memento( this.state );
        }
        /**
         *将发起人恢复得到备忘录对象所记载的状诚
         *
         * */
        public void restoreMemento( MementoIF memento)
        {
            /**
             * 内部成员
             * */
            Memento aMemento = (Memento) memento;
            aMemento.speak();
            this.setState( aMemento.getState() );
        }
        /**
         *
         *
         * */
        public  void speak()
        {
            System.out.println("发起者开始");
        }
        /**
         *状态取值
         *
         * */
        public String getState()
        {
            return this.state;
        }
        /**
         *状态赋值
         *
         * */
        public void setState(String state)
        {
            this.state = state;
            System.out.println("状态 = " + state);
        }
        /**
         *内部成员,备忘录
         *
         * */
        class Memento implements MementoIF
        {
            /**
             *
             *
             * */
            private String savedState;
            /**
             *
             *
             * */
            private Memento(String someState)
            {
                savedState = someState;
            }
    
            public  void speak()
            {
                System.out.println("内部备忘录讲话");
            }
            /**
             *状诚取值
             *
             * */
            private void setState(String someState)
            {
                savedState = someState;
            }
            /**
             *状诚赋值
             *
             * */
            private String getState()
            {
                return savedState;
            }
        }
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 备忘录模式 Memento Pattern/Snapshot Pattern/Token Pattern
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Memento.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    package com.javapatterns.memento;
    
    /**
     * 备忘录角色
     *
     * */
    public class Memento implements MementoIF{
        /**
         *
         *
         * */
        private String savedState;
        /**
         *
         *
         * */
        private Originator lnkOriginator;
        /**
         *备忘录角色 构造
         * @param someState  状态
         * */
        private Memento(String someState)
        {
    
            savedState = someState;
        }
        /**
         *
         *
         * */
        private void setState(String someState)
        {
            savedState = someState;
        }
    
        /**
         *
         *
         * */
        public  void speak()
        {
    
            System.out.println("备份录开始");
        }
    
        /**
         *
         *
         * */
        private String getState()
        {
            return savedState;
        }
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 备忘录模式 Memento Pattern/Snapshot Pattern/Token Pattern
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Caretaker.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    package com.javapatterns.memento;
    /**
     *负责人角色
     *
     * */
    public class Caretaker {
        /**
         *
         *
         * */
        private MementoIF memento;
        /**
         *
         *
         * */
        public MementoIF retrieveMemento()
        {
    
            //this.memento.speak();
            return this.memento;
        }
        /**
         *
         *
         * */
        public void saveMemento(MementoIF memento)
        {
           // memento.speak();
            this.memento = memento;
        }
    }
    

      

    调用:

     //备忘录模式
                Originator o = new Originator();
                o.speak();
                //Memento m=new Memento("开");
               // m.speak();
                Caretaker c = new Caretaker();
                o.setState("开");
    
                // Store internal state
                c.saveMemento( o.createMemento() );
                // Continue changing originator
                o.setState("关");
                // Restore saved state
                o.restoreMemento( c.retrieveMemento() );
    

      

    输出:

    发起者开始
    状态 = 开
    状态 = 关
    内部备忘录讲话
    状态 = 开
    

      

  • 相关阅读:
    C# Sleep延时方法
    浅谈模糊测试
    python time模块常用方法小结
    Markdown使用小结
    关于测试用例设计、评审及用例质量评估的思考
    关于评估软件产品质量的思考
    关于软件测试工程师进阶提升的思考
    关于软件测试中回归测试的思考
    测试技术的思考 ---- 读《微软的软件测试之道》有感系列
    vue-learning:22
  • 原文地址:https://www.cnblogs.com/geovindu/p/16739724.html
Copyright © 2020-2023  润新知