码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-14 21:25:08      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

  • 备忘录模式的简介:

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

         技术分享

  • 从代码来理解:(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;
        }
        
        
    }
    
    
}
  • 运行结果:

       技术分享

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

  • 结束语:

       备忘录模式是经典的GOF之一,一般用在序列化对象的时候。

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

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!