欢迎来到天天文库
浏览记录
ID:37454259
大小:135.50 KB
页数:14页
时间:2019-05-24
《备忘录(Memento Pattern)模式q》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、备忘录(MementoPattern)模式备忘录模式又叫做快照模式(SnapshotPattern)或Token模式,是对象的行为模式。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。常见的软件系统往往不止存储一个状态,而是需要存储多个状态。这些状态常常是一个对象历史发展的不同阶段的快照,存储这些快照的备忘录对象叫做此对象的历史,某一个快照所处的位置叫做检查点
2、。备忘录角色:备忘录角色有如下的责任。1、将发起人(Originator)对象的内部状态存储起来,备忘录可以根据发起人对象的判断来决定存储多少 发起人(Originator)对象的内部状态。2、备忘录可以保护其内容不被发起人对象之外的任何对象所读取。备忘录有两个等效的接口:1、窄接口:负责人(Caretaker)对象(和其他除发起人对象之外的任何对象)看到的是备忘录的窄 接(narrowinterface),这个窄接口只允许它把备忘录对象传给其他的对象;2、宽接口:与负责人对象看到的窄接口相反的是,发起人对象可以看到一个宽接口(wideint
3、erface), 这个宽接口允许它读取所有的数据,以便根据数据恢复这个发起人对象的内部状态。853P 发起人角色:发起人角色有如下责任:1、创建一个含有当前的内部状态的备忘录对象。2、使用备忘录对象存储其内部状态。负责人角色:负责人角色有如下的责任:1、负责保存备忘录对象2、不检查备忘录对象的内容。Java代码 1.宽接口和白箱: 2. 发起人角色 3. public class Originator{ 4. private String state; 5. 6.
4、 //工厂方法,返还一个新的备忘录对象 7. public Memento createMemento(){ 8. return new Memento(state); 9. } 10. 11. //将发起人恢复到备忘录对象所记载的状态 12. public void restoreMemento(Memento memento){ 13. th
5、is.state = memento.getState(); 14. } 15. 16. //状态的取值方法 17. public String getState(){ 18. return this.state; 19. } 20. 21. //状态的赋值方法 22. public void setState(String
6、state){ 23. this.state = state; 24. System.out.println("Current state = " + this.state); 25. } 26. } 27. 28. 备忘录模式要求备忘录对象提供两个不同的接口:一个宽接口提供给发起人对象,另一个窄接口提供给所有其他的对象,包括负责人对象。 29. 宽接口允许发起人读取到所有的数据;窄接口只允许它把备
7、忘录对象传给其他的对象而看不到内部的数据。 30. //备忘录角色 1. public class Memento{ 2. private String state; 3. 4. public Memento(String state){ 5. this.state = state; 6. } 7. 8. public String getS
8、tate(){ 9. return this.state; 10.
此文档下载收益归作者所有