收藏 分销(赏)

备忘录模式.pptx

上传人:人****来 文档编号:4377346 上传时间:2024-09-14 格式:PPTX 页数:15 大小:844.35KB
下载 相关 举报
备忘录模式.pptx_第1页
第1页 / 共15页
备忘录模式.pptx_第2页
第2页 / 共15页
备忘录模式.pptx_第3页
第3页 / 共15页
备忘录模式.pptx_第4页
第4页 / 共15页
备忘录模式.pptx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服