• 备忘录模式【行为模式】


    备忘录模式

    Without violating encapsulation,capture and externalize an object's internal state 
    so that the object can be restored to this state later.
    在不破坏封装性的前提下,捕获一个对象的内部状态并将其外部化,这样,该对象就可以在之后恢复到该状态。
    
    public class Memento {
        /**
         * 备忘录模式:
         * Without violating encapsulation,capture and externalize an object's internal state
         * so that the object can be restored to this state later.
         * 在不破坏封装性的前提下,捕获一个对象的内部状态并将其外部化,这样,该对象就可以在之后恢复到该状态。
         */
        @Test
        public void all() {
            final Boy boy = Boy.builder().state("happy").build();
            // 基于目标对象创建备忘录
            final BoyMemento create = boy.createMemento();
    
            // 改变对象的内部状态
            boy.changeState();
            assertEquals("unhappy", boy.getState());
    
            // 从备忘录中恢复对象的状态
            boy.restoreMemento(create);
            assertEquals("happy", boy.getState());
        }
    }
    /**
     * 1)需要捕获内部状态的对象
     */
    @Data
    @Builder
    class Boy{
        private String state;
        public BoyMemento createMemento() {
            return BoyMemento.builder().state(state).build();
        }
        public void restoreMemento(BoyMemento memento) {
            setState(memento.getState());
        }
        public void changeState() {
            setState("unhappy");
        }
    }
    
    /**
     * 2)备忘录对象
     */
    @Data
    @Builder
    class BoyMemento{
        private String state;
    }
    
  • 相关阅读:
    perl shell交换示例
    python语法测试
    python使用带汉字的正则表达式
    【zz】Perl数字与字符串间的自动转换
    python完成文件按行拆分按列重组。
    转载 python每次读入文件一行的问题(血的教训啊)
    工程总结
    perl 语言学习——从C/C++到perl
    perl双层哈希求长度
    visual studio 代码分析利器 FxCop
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10165448.html
Copyright © 2020-2023  润新知