备忘录模式.ppt

上传人:hyn****60 文档编号:70802204 上传时间:2023-01-28 格式:PPT 页数:16 大小:1MB
返回 下载 相关 举报
备忘录模式.ppt_第1页
第1页 / 共16页
备忘录模式.ppt_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《备忘录模式.ppt》由会员分享,可在线阅读,更多相关《备忘录模式.ppt(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、备忘录(Memento)模式Page 2Memento引言引言一个现实例子一个现实例子备忘录模式解析备忘录模式解析应用举例应用举例备忘录模式优缺点备忘录模式优缺点Page 3Mementon俗话说:世上难买后悔药。所以凡事讲究个“三思而后行”,但总常见有人做“痛心疾首”状:当初我要是。如果真的有大话西游中能时光倒流的“月光宝盒”,那这世上也许会少一些伤感与后悔当然这只能是痴人说梦了。但是在我们手指下的程序世界里,却有的后悔药买。今天我们要讲的备忘录模式便是程序世界里的“月光宝盒”。Page 4Memento角色扮演游戏(RPG)中,玩家需要扮演游戏中的一位或者多位角色,在虚拟的世界中进行冒险。

2、打RPG游戏的时候经常在打大boss之前把游戏保存一下,如果死了,就重新来。其实这就是备忘录模式。代码备忘录模式备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。Page 5MementonMemento模式是用一个Memento对象来存储另外一个对象的内部状态(前提条件是不破坏封装),将一个对象的状态捕捉住,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代器模式一同使用。nMemento模式中三个角色:Memento(备忘录)。备忘录存储原发器的内部状态。原发

3、器根据需要决定备忘录存储原发器的哪些内部状态;防止原发器以外的其他对象访问备忘录。Originator(原发器)。创建一个备忘录,用以记录当前时刻他的内部状态;使用备忘录恢复内部状态。Caretaker(负责人)。负责保存好备忘录。不能对备忘录的内容进行操作或检查。Page 6MementonMemento的类图:备忘录模式用一个Caretaker对象来保存发起者Originator的Memento状态。Page 7MementonOriginator(原发器)代码:MementonMemento(备忘录)代码:MementonCaretaker(负责人)代码:Mementon测试类代码:Pa

4、ge 11Mementon备忘录模式有以下的一些效果:n1)保持封装的边界:使用备忘录可以避免暴露一些只应有原发器管理却又必须存储在原发器之外的信息。该模式把可能很复杂的Originator内部信息对其他对象屏蔽起来,从而保持了封装的边界。n2)它简化了原发器在其他的保持封装性的设计中,originator负责保持客户请求过的内部状态版本。这就把所有存储管理的重任务交给了Originator。让客户管理他们请求的状态将会简化Originator,并且使得客户工作结束时无需通知原发器。n3)使用备忘录可能代价很高如果原发器在生成备忘录时必须拷贝并存储大量的信息,或者客户非常频繁地创建备忘录和恢复

5、原发器状态,可能会导致非常大的开销。除非封装和恢复Originator状态的开销不大,否则该模式可能并不适合。n4)定义窄接口和宽接口在一些语言中可能难以保证只有原发器可访问备忘录的状态。n5)维护备忘录的潜在代价管理器负责删除它所维护的备忘录。然而,管理器不知道备忘录中有多少个状态,因此当存储备忘录时,一个本来很小的管理器,可能会产生大量的存储开销。Page 12Mementon观世音甘泉活树的故事n却说孙大圣保唐僧西行,路过万寿山五庄观,与道童发生口角,一时发怒,把人参果树推到。只见“那棵树倒在地下,土开根现,叶落枝枯。”n大圣只好请菩萨救活人参果树。菩萨将杨柳枝蘸出瓶中甘露,道:“扶起树

6、来,从头浇下,自然根皮相合,叶长芽生,枝青果出。”菩萨将杨柳枝细细撒上,口中又念着经咒,不多时,撒净那舀出之水,只见那树果然依旧青枝绿叶浓郁阴森,上有二三十个人参果。n这就是说,果树的状态保存在菩萨的甘露之中,菩萨可以从甘露中将果树的状态恢复过来。这就是备忘录模式的应用,果树是发起人角色,甘泉是备忘录角色,而菩萨扮演负责人角色。Page 13Memento悟空果树甘泉菩萨发起人备忘录负责人Page 14Mementou备忘录模式的优点备忘录模式的优点:a)有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但是必须要由发起人对象自己读取,这时,使用备忘录模式可以把复杂的发起人内部信息对

7、其他的对象屏蔽起来,从而可以恰当地保持封装的边界。b)本模式简化了发起人类。发起人不再需要管理和保存其内部状态的一个个版本,客户端可以自行管理他们所需要的这些状态的版本。c)当发起人角色的状态改变的时候,有可能这个状态无效,这时候就可以使用暂时存储起来的备忘录将状态复原。Page 15Mementou 备忘录模式的缺点:备忘录模式的缺点:a)如果发起人角色的状态需要完整地存储到备忘录对象中,那么在资源消耗上面备忘录对象会很昂贵。b)当负责人角色将一个备忘录存储起来的时候,负责人可能并不知道这个状态会占用多大的存储空间,从而无法提醒用户一个操作是否很昂贵。c)当发起人角色的状态改变的时候,有可能这个协议无效。如果状态改变的成功率不高的话,不如采取“假如”协议模式。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com