• Java设计模式(21)——行为模式之备忘录模式(Memento)


    一、概述

      概念

      

       UML简图

      

       角色

      根据下图得到角色

      

      备忘录角色(Memento)、发起人角色(Originator)、负责人角色(Caretaker)

    二、实践

      使用白箱实现,给出角色的代码:

      发起人

    /**
     * 发起者
     *
     * @author Administrator
     **/
    public class Originator {
        /**
         * 发起者想要保存的状态
         */
        private String state;
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    
        /**
         * 返回备忘录角色的工厂方法
         * @return 备忘录角色
         */
        public Memento createMemento() {
            return new Memento(state);
        }
        public void restoreMemento(Memento m) {
            this.state = m.getState();
        }
    }

      备忘录

    /**
     * 备忘录角色
     *
     * @author Administrator
     **/
    public class Memento {
        private String state;
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    
        public Memento(String state) {
            this.state = state;
        }
    }

      负责人

    /**
     * 负责人
     *
     * @author Administrator
     **/
    public class Caretaker {
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }

      客户端

    /**
     * 客户端
     * @author  Administrator
     **/
    public class Client {
        private static Originator originator = new Originator();
        private static Caretaker caretaker = new Caretaker();
        public static void main(String[] args) {
            // 改变发起人状态
            originator.setState("new");
            // 创建备忘录并由负责人保存
            caretaker.setMemento(originator.createMemento());
            // 修改发起人状态
            originator.setState("show");
            System.out.println(originator.getState());
            // 恢复状态
            originator.restoreMemento(caretaker.getMemento());
            System.out.println(originator.getState());
        }
    }

    三、改进与思考

      这里就不再展开黑箱实现了,给出《Java与模式》中的实现方案

      

       一些实际运用

      例如WEB运用中输入表单的时候可以通过备忘录模式进行一些表单数据的回显。

  • 相关阅读:
    博客园Js设置
    springboot练习笔记
    相关的其他文件
    设计模式之----代理模式
    JSP的四种范围
    io流读写及相关内容
    缓存
    gson解析json
    Android简单获得通讯录
    android服务之一 Service
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7767100.html
Copyright © 2020-2023  润新知