网站首页 > 博客文章 正文
看一个游戏角色状态恢复的需求:游戏角色有攻击力和防御力,在大战Boss之前保存自己的自身状态(攻击力和防御力),大战Boss之后攻击力和防御力都下降,从备忘录状态恢复到战前状态。
传统方案(类图)如下:
传统方案带来的问题:
1) 一个对象对应一个保存状态的对象,这样当我们系统的对象很多时,不利于管理,开销也很大。
2) 传统的方式是作一个简单的备份,另外new出一个对象来,再把需要备份的数据放到这个对象,但这是暴露了对象内部的细节。
3) 解决方案:备忘录模式。
备忘录模式(Memento Pattern)介绍:
1. 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后可以将这个状态恢复到原先保存的状态。
2. 可以这样理解备忘录模式:在现实生活中,备忘录是用来记录某些要去做的事情,或者记录已经达成共同意见的场景,以防忘记了。而且在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录对象的某种状态或者某些数据,当要做回退时,可以从备忘录对象中,获取原来的数据进行恢复操作。
3. 备忘录模式也是属于行为模式。
备忘录模式类图:
对原理类图的说明即访问者模式的角色和职责:
1) Originator:需要保存状态的对象。
2) Memento:备忘录对象,负责保存好记录,即Originator的内部状态。
3) Caretaker:守护者对象,负责保存和管理多个备忘录对象。而且是以集合的形式。说明:如果希望保存多个Originator对象不同时期的状态也可以。只需要用HashMap<String,集合>的方式保存。
备忘录模式注意事项和细节:
1. 给用户提供了一种可以恢复状态的机制,可以使得用户很方便的回到某个历史状态。
2. 实现了信息的封装,使得用户不需要关心状态的保存细节。
缺点:
1) 如果类的成员变量比较多,势必会占用较多的资源,而且每次保存都会消耗内存,这个一定要注意。
适用场景:
1. 后悔药;
2. 打游戏时的存档;
3. windows中的ctrl+z。
为了节约内存,备忘录模式可以和原型模式一起使用。
猜你喜欢
- 2024-10-01 设计模式 之 行为型模式(行为型设计模式特点)
- 2024-10-01 Go语言设计模式-访问者(go语言有设计模式吗)
- 2024-10-01 Spring Boot 实战:运用访问者模式灵活扩展订单处理逻辑
- 2024-10-01 visitor pattern 访问者模式(访问者模式工作原理)
- 2024-10-01 Aha!设计模式(105)-访问者模式(1)
- 2024-10-01 GOF设计模式(命令模式,访问者模式,迭代器模式,观察者模式)
- 2024-10-01 设计模式第2招第9式之解释器模式(解释器原理)
- 2024-10-01 设计模式第2招第1式之观察者模式(观察者设计模式的优点)
- 2024-10-01 「编程设计」访问者(Visitor)模式-补丁式为原体系增加新功能
- 2024-10-01 访问者模式的结构(访问者模式的结构是)
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)