网站大量收购闲置独家精品文档,联系QQ:2885784924

21 C#设计模式-备忘录模式.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
21 C#设计模式-备忘录模式

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()等方法,将导致在备忘录中保存的历史状态发生改变,通过撤销操作所恢复的状态就不再是真实的历史状态,备忘录模式也就失去了本身的意义 ? 理想的情况是只允许生成该备忘录的原发器访问备忘录的内部状态 备忘录模式的结构与实现

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档