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

      转载请声明: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之一,应用于序列化对象

原文地址:https://www.cnblogs.com/courtier/p/4292164.html