- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
www.ChinaSA.info www.ChinaSA.info Design Patterns 备忘录模式 刘 伟 (Sunny) weiliu_china@126.com 大纲 备忘录模式概述 备忘录模式的结构与实现 备忘录模式的应用实例 实现多次撤销 备忘录模式的优缺点与适用环境 备忘录模式概述 备忘录模式——软件中的“后悔药”——撤销(Undo) 备忘录模式概述 分析 通过使用备忘录模式可以让系统恢复到某一特定的历史状态 首先保存软件系统的历史状态,当用户需要取消错误操作并且返回到某个历史状态时,可以取出事先保存的历史状态来覆盖当前状态 备忘录模式概述 备忘录模式的定义 对象行为型模式 备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。 Memento Pattern: Without violating encapsulation, capture and externalize an objects internal state so that the object can be restored to this state later. 备忘录模式概述 备忘录模式的定义 别名为标记(Token)模式 提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤 当前在很多软件所提供的撤销(Undo)操作中就使用了备忘录模式 备忘录模式的结构与实现 备忘录模式的结构 备忘录模式的结构与实现 备忘录模式的结构 备忘录模式包含以下3个角色: Originator(原发器) Memento(备忘录) Caretaker(负责人) 备忘录模式的结构与实现 备忘录模式的实现 典型的原发器类代码: namespace MementoSample { public class Originator { private string state; public Originator(string state) { this.state = state; } // 创建一个备忘录对象 internal Memento CreateMemento() { return new Memento(this); } // 根据备忘录对象恢复原发器状态 internal void RestoreMemento(Memento m) { state = m.GetState(); } public void SetState(string state) { this.state=state; } public string GetState() { return this.state; } } } 备忘录模式的结构与实现 备忘录模式的实现 典型的备忘录类代码: namespace MementoSample { //备忘录类,默认可见性,在程序集内可见 internal class Memento { private string state; internal Memento(Originator o) { state = o.GetState(); } internal void SetState(string state) { this.state = state; } internal string GetState() { return this.state; } } } 备忘录模式的结构与实现 备忘录模式的实现 除了Originator类,不允许其他类来调用备忘录类Memento的构造函数与相关方法 如果允许其他类调用SetState()等方法,将导致在备忘录中保存的历史状态发生改变,通过撤销操作所恢复的状态就不再是真实的历史状态,备忘录模式也就失去了本身的意义 ? 理想的情况是只允许生成该备忘录的原发器访问备忘录的内部状态 备忘录模式的结构与实现
您可能关注的文档
最近下载
- 2024年江苏省南京市中考物理试题卷(含答案解析).docx
- 八年级美术上册5静物画有声教案省公开课一等奖新名师优质课获奖PPT课件.pptx
- 电子鼓hd3中文说明书.pdf
- 2024年江苏省南京市中考数学试题卷(含答案解析).docx
- 通桥(2018)1301-Ⅲ时速250公里、350公里高速铁路无砟轨道(16+24+16)m钢筋混凝土刚构连续梁.pdf
- 2024年武汉市城市建设投资开发集团限公司招聘【221人】公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 12.《玩偶之家(节选)》课件 统编版高中语文选择性必修中册.pptx
- 眼部健康保养.ppt VIP
- 急性一氧化碳中毒诊治专家共识.pptx
- 心内科常见疾病护理常规ppt.pptx
文档评论(0)