zoukankan      html  css  js  c++  java
  • 第十八章 备忘录模式

    备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以恢复该对象到原先的状态。

    Caretaker负责不暴露Originator的内部细节,Memento负责备忘字段。用星姐的话----完美!\> <///

    不足:角色状态要完整存储到备忘录对象中,如果状态数据很大很多,在资源消耗上,将非常耗内存。

    /**
     * Created by hero on 16-4-5.
     */
    public class Originator {
        private String state;
    
        public Memento createMemento(){
            return new Memento(state);
        }
    
        public void recoveryState(Memento memento){
            state = memento.getState();
        }
    
        public Originator() {
        }
    
        public Originator(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    }
    /**
     * Created by hero on 16-4-5.
     */
    public class Memento {
        private String state;
    
        public Memento(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        //不能有set方法
    }
    /**
     * Created by hero on 16-4-5.
     */
    public class Caretaker {
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }
    public class Main {
    
        public static void main(String[] args) {
            Originator originator = new Originator();
            originator.setState("on");
            Caretaker caretaker = new Caretaker();
            caretaker.setMemento(originator.createMemento());
            originator.setState("off");
            originator.recoveryState(caretaker.getMemento());
        }
    }
  • 相关阅读:
    解决点击状态栏时ScrollView自动滚动到初始位置失效办法
    如何设计用户、角色、权限表
    Subject的功能
    shiro授权的源码分析
    shiro之认证源码分析
    shiro配置
    JSONArray转JSONObject
    parameterType
    MyBatis:Parameter Maps collection does not contain value for 的问题解决
    mybatis报ORA-00911: 无效字符
  • 原文地址:https://www.cnblogs.com/littlehoom/p/5357251.html
Copyright © 2011-2022 走看看