备忘录模式
2018-10-29 08:32
30 查看
文档查阅说明:
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态
使用场景:
● 需要保存和恢复数据的相关状态场景。
● 提供一个可回滚(rollback)的操作。
● 需要监控的副本场景中。
● 数据库连接的事务管理就是用的备忘录模式。
注意:
●备忘录的生命期
●备忘录的性能
不要在频繁建立备份的场景中使用备忘录模式(比如一个for循环中)。
clone方式备忘录:
● 发起人角色融合了发起人角色和备忘录角色,具有双重功效
多状态的备忘录模式
● 增加了一个BeanUtils类,其中backupProp是把发起人的所有属性值转换到HashMap中,方便备忘录角色存储。restoreProp方法则是把HashMap中的值返回到发起人角色中
[code]public class Memento { private boolean state; public Memento(boolean state) { super(); this.state = state; } public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } }
[code]public class Originator { private boolean state; private Memento memento; public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } public Memento getMemento() { return new Memento(state); } public void setMemento(Memento memento) { this.memento = memento; } public void show() { System.out.println("state:"+state); } }
[code]public class Caretaker { private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; } }
[code]public class Test { public static void main(String[] args) { Originator originator = new Originator(); originator.setState(true); originator.show(); Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.getMemento()); originator.setState(false); originator.show(); originator.setMemento(caretaker.getMemento()); originator.show(); } }
阅读更多
相关文章推荐
- 设计模式-行为型之备忘录模式
- 深入浅出Java设计模式之备忘录模式
- 《设计模式之禅》——备忘录模式
- C#备忘录模式....
- 大话设计模式C++实现-第18章-备忘录模式
- java设计模式9.备忘录模式、访问者模式、调停者模式
- Design Pattern Memo 备忘录设计模式
- 取消改变基本数据——应用备忘录模式
- JAVA设计模式之备忘录模式
- 行为类模式(六):备忘录(Memento)
- Memento备忘录模式
- 《GOF设计模式》—备忘录(MEMENTO)—Delphi源码示例:一个反映备忘录模式的迭代接口
- 【设计模式】—— 备忘录模式Memento
- 超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
- 备忘录模式
- IOS设计模式-备忘录模式
- 备忘录模式-对象行为型
- 设计模式完整备忘录
- 行为模式--备忘录模式
- 撤销功能的实现----备忘录模式