备忘录(Memento Pattern)模式q

备忘录(Memento Pattern)模式q

ID:37454259

大小:135.50 KB

页数:14页

时间:2019-05-24

备忘录(Memento Pattern)模式q_第1页
备忘录(Memento Pattern)模式q_第2页
备忘录(Memento Pattern)模式q_第3页
备忘录(Memento Pattern)模式q_第4页
备忘录(Memento Pattern)模式q_第5页
资源描述:

《备忘录(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.    

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。