• 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() );
    

      

    输出:

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

      

  • 相关阅读:
    笔记20200521002:多线程【线程的优先级】
    笔记20200521001:多线程【守护线程】
    笔记20200520:多线程【线程强制执行_join】
    笔记20200519:多线程【线程礼让_yield】
    笔记20200518:多线程【线程休眠_sleep】
    2020.4.4号全国疫情哀悼日网页变灰色前端是如何实现的?-pink老师
    2020年最新版Web前端学习路线图-前端小白入门必读-pink老师推荐
    ECharts数据可视化项目-大屏数据可视化展示-echarts 图表入门基础视频制作-pink老师直播课更新完毕
    2019前端学习路线心得-黑马程序员pink老师
    2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制
  • 原文地址:https://www.cnblogs.com/geovindu/p/16739724.html
Copyright © 2020-2023  润新知