• 从保险柜的角度来看设计模式之备忘录模式


          转载请声明:http://www.cnblogs.com/courtier/p/4292164.html

    • 备忘录模式的简介:

            在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。

             1355208139_9727

    • 从代码来理解:(Memento:保险柜 Originator:我  Caretaker:银行存放保险柜的地方)
    package memo;
    
    //保险柜不能有任何开口(方法),只能做个保险柜
    public interface SafeBox {
    
    }
    • 银行只有保险柜而不能知道里面有什么:
    package memo;
    
    public class Bank {
        //持有保险柜
        private SafeBox safeBox = null;
    
        //持有保险柜
        public void setSafeBox(SafeBox safeBox) {
            this.safeBox = safeBox;
        }
        
        //当主人要的时候返回保险柜
        public SafeBox getSafeBox() {
            return safeBox;
        }
        
    }
    • 通过内部类来存钱:
    package memo;
    
    public class Me {
        private String money = "1000000000000000000000000$";
        
        
        //把存好钱的保险柜交给银行
        public SafeBox getBox()
        {
            return new SaveOrGetMoney(money);
        }
        
        //把钱拿出来
        public String getMoneyOfBox(SafeBox safeBox)
        {
            SaveOrGetMoney getMoney = (SaveOrGetMoney)safeBox;
            return getMoney.getMoney();
        }
        
        //存钱保险柜 拿钱出来
        class SaveOrGetMoney implements SafeBox
        {
            private String money;
    
            public SaveOrGetMoney(String money) {
                super();
                this.money = money;
            }
            //拿钱
            public String getMoney() {
                return money;
            }
            
            
        }
        
        
    }
    • 运行结果:

           QQ图片20150214210931

                    (源代码:https://github.com/aliencool/Design-Pattrn/tree/master/memo)

    • 结束语:

           备忘录模式是经典的GOF之一,应用于序列化对象

  • 相关阅读:
    未能加载文件或程序集BUG系列
    寄语
    65. Valid Number
    56. Merge Intervals
    sublime text3 anaconda 插件报错
    42. Trapping Rain Water
    windows 下win+r无效
    93. Restore IP Addresses
    32. Longest Valid Parentheses
    48 Rotate Image
  • 原文地址:https://www.cnblogs.com/courtier/p/4292164.html
Copyright © 2020-2023  润新知