建站快车是什么,网站开发就业,php7.0 wordpress 设置,wordpress文章数据包文章目录 游戏角色状态恢复问题传统方案解决游戏角色恢复传统的方式的问题分析备忘录模式基本介绍游戏角色恢复状态实例备忘录模式的注意事项和细节 游戏角色状态恢复问题
游戏角色有攻击力和防御力#xff0c;在大战 Boss 前保存自身的状态(攻击力和防御力)#xff0c;当大… 文章目录 游戏角色状态恢复问题传统方案解决游戏角色恢复传统的方式的问题分析备忘录模式基本介绍游戏角色恢复状态实例备忘录模式的注意事项和细节 游戏角色状态恢复问题
游戏角色有攻击力和防御力在大战 Boss 前保存自身的状态(攻击力和防御力)当大战 Boss 后攻击力和防御力下降从备忘录对象恢复到大战前的状态
传统方案解决游戏角色恢复 传统的方式的问题分析
一个对象就对应一个保存对象状态的对象 这样当我们游戏的对象很多时不利于管理开销也很大.传统的方式是简单地做备份new 出另外一个对象出来再把需要备份的数据放到这个新对象但这就暴露了对象内部的细节解决方案 备忘录模式
备忘录模式基本介绍 备忘录模式Memento Pattern在不破坏封装性的前提下捕获一个对象的内部状态并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式现实生活中的备忘录是用来记录某些要去做的事情或者是记录已经达成的共同意见的事情以防忘记了。而在软件层面备忘录模式有着相同的含义备忘录对象主要用来记录一个对象的某种状态或者某些数据当要做回退时可以从备忘录对象里获取原来的数据进行恢复操作 备忘录模式属于行为型模式 对原理类图的说明-即(备忘录模式的角色及职责)
originator : 对象(需要保存状态的对象)Memento 备忘录对象,负责保存好记录即 Originator 内部状态Caretaker: 守护者对象,负责保存多个备忘录对象 使用集合管理提高效率说明如果希望保存多个 originator 对象的不同时间的状态也可以只需要要 HashMap String, 集合
代码实现 https://gitee.com/luan_hao/design-pattern/tree/master/src/main/java/com/lh/memento
游戏角色恢复状态实例 应用实例要求 游戏角色有攻击力和防御力在大战 Boss 前保存自身的状态(攻击力和防御力)当大战 Boss 后攻击力和防御力下降从备忘录对象恢复到大战前的状态 思路分析和图解(类图) 代码实现
https://gitee.com/luan_hao/design-pattern/tree/master/src/main/java/com/lh/memento/game
备忘录模式的注意事项和细节
给用户提供了一种可以恢复状态的机制可以使用户能够比较方便地回到某个历史的状态实现了信息的封装使得用户不需要关心状态的保存细节如果类的成员变量过多势必会占用比较大的资源而且每一次保存都会消耗一定的内存, 这个需要注意适用的应用场景 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri z。 4、IE 中的后退。 4、数据库的事务管理为了节约内存备忘录模式可以和原型模式配合使用