- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 人教版三年级上册数学全册教学设计(配2025年秋新版教材).docx
- 西南交通大学机械原理课后习题答案.pdf VIP
- 大模型面试题-15-大模型 RAG 经验面.pdf VIP
- 环境统计第二章.ppt VIP
- 2021年新教材人教A版高中数学必修第一册第五章三角函数 教学课件.pptx VIP
- (完整版)幼儿园卫生保健培训.pptx VIP
- 苏教版数学四年级上册第八单元《垂线与平行线》课件.pptx VIP
- 110kV变电站电气设备安装及调试施工方案.pdf VIP
- 西南交通大学机械原理课后习题答案.pdf VIP
- 江西省南昌市一中2024-2025学年高一下学期第一次月考语文试题(含解析).docx VIP
文档评论(0)