探索程序设计模式结课论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
探索程序设计模式结课论文.doc

  探索程序设计模式结课论文 探索程序设计模式结课论文 导读: 河南理工大学 《程序设计模式》结课论文 2012 — 2014学年 第二学期 论文题目 设计模式之备忘录模式 学生姓名 学 号 专业班级 指导教师 201x 年 6月 13 日 备忘录模式 1.模式背景 有一首歌叫做《如果再回到从前》,相信大家一定听过。时光如果可以倒流,那么很多时候做的错误的决定或者选择就可以回到去过,撤销并重做,这是一件多么好的事情啊! 还记得玩单机PC游戏时,通常在打BOSS前都要先保存一个进度,如果失败了还可以回到刚才的那个进度,从头再来。很多现实里无法实现的事情在软件中就可以实现,而这正是设计应用软件时常用的基本思想——保存备忘录。 2.模式动机与意图 为了使软件的使用更加人性化,对于误操作,我们需要提供一种类似“后悔药”的机制,让软件系统可以回到误操作前的状态,因此需要保存用户每一次操作时系统的状态,一旦出现误操作,可以把存储的历史状态取出即可回到之前的状态。 现在大多数软件都有撤销(Undo)的功能,快捷键一般都是Ctrl+Z,目的就是为了解决这个后悔的问题。 在此以游戏进度保存为例子,在游戏的某个场景,以游戏角色有生命力、攻击力、防御力等等数据,在打BOSS前和后一定会不一样。因此,实现游戏当前内容的保存,在感觉打不过BOSS时,允许回到游戏存档时的状态。 为了实现这一功能,我们要使用备忘录模式。 3.模式定义 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 4.结构图 4.1备忘录模式 4.1.1备忘录模式结构图 4.1.2模式分析 由于在备忘录中存储的是原发器的中间状态,因此需要防止原发器以外的其他对象访问备忘录。 备忘录对象通常封装了原发器的部分或所有的状态信息,而且这些状态不能被其他对象访问,也就是说不能在备忘录对象之外保存原发器状态,因为暴露其内部状态将违反封装的原则,可能有损系统的可靠性和可扩展性。 4.1.3备忘录模式的优点 提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用先前存储起来的备忘录将状态复原。 实现了信息的封装,一个备忘录对象是一种原发器对象的表示,不会被其他代码改动,这种模式简化了原发器对象,备忘录只保存原发器的状态,采用堆栈来存储备忘录对象可以实现多次撤销操作,可以通过在负责人中定义集合对象来存储多个备忘录。 4.1.4备忘录模式的缺点 资源消耗过大,如果类的成员变量太多,就不可避免占用大量的内存,而且每保存一次对象的状态都需要消耗内存资源,如果知道这一点大家就容易理解为什么一些提供了撤销功能的软件在运行时所需的内存和硬盘空间比较大了。 4.2当前 3 4 探索程序设计模式结课论文 导读:MementoSaveState(){return(neento(vit,atk,def));}//恢复角色状态publicvoidRecoveryState(RoleStateMementomemento){this.vit=memento.Vitality;this.atk=memento.Attack;this.def=memento.Defense;}//角色战斗打BOSSpublicvoidFight(){vit-=50;}}RoleStateMemento 例子结构图 Originator(游戏角色):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复它的状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。 Memento(备忘存档):负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento。 5.代码实现 Originator 游戏角色类 class Originator { private int vit; private int atk; private int def; //初始化角色 public void GetInitState() { vit = 100; atk = 100; def = 100; } //显示角色状态 public void StateDisplay() { Console.emento SaveState() { return (neento(vit,atk,def)); } //恢复角色状态 public void RecoveryState(RoleState

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档