- 备忘录模式的简介:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。
- 从代码来理解:(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之一,一般用在序列化对象的时候。
时间: 2024-10-13 06:43:09