当前位置: 首页 > news >正文

龙海网站建设公司品牌seo推广咨询

龙海网站建设公司,品牌seo推广咨询,专做蔬菜大棚的网站,wordpress页面难看目录 问题引进 游戏角色状态恢复问题 传统方案解决游戏角色恢复 传统的方式的问题分析 备忘录模式基本介绍 基本介绍 备忘录模式的原理类图 对原理类图的说明 游戏角色恢复状态实例 应用实例要求 思路分析和图解(类图) 代码实战 备忘录模式的注意事项和细节 问题引…

目录

问题引进

游戏角色状态恢复问题

传统方案解决游戏角色恢复

 传统的方式的问题分析

备忘录模式基本介绍

基本介绍

备忘录模式的原理类图

对原理类图的说明

游戏角色恢复状态实例

应用实例要求

思路分析和图解(类图)

代码实战 

 备忘录模式的注意事项和细节


问题引进

游戏角色状态恢复问题

游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态

传统方案解决游戏角色恢复

 传统的方式的问题分析

1) 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大.
2) 传统的方式是简单地做备份,new 出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节
3) 解决方案: => 备忘录模式

备忘录模式基本介绍

基本介绍

1) 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态

2) 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作

3) 备忘录模式属于行为型模式

备忘录模式的原理类图

对原理类图的说明

1) originator : 对象(需要保存状态的对象)
2) Memento : 备忘录对象,负责保存好记录,即 Originator 内部状态
3) Caretaker: 守护者对象,负责保存多个备忘录对象, 使用集合管理,提高效率
4) 说明:如果希望保存多个 originator 对象的不同时间的状态,也可以,只需要要 HashMap <String, 集合>

游戏角色恢复状态实例

应用实例要求

游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态

思路分析和图解(类图)

代码实战 

Memento 

public class Memento {private  int vit;private  int def;public Memento(int vit, int def) {this.vit = vit;this.def = def;}public int getVit() {return vit;}public void setVit(int vit) {this.vit = vit;}public int getDef() {return def;}public void setDef(int def) {this.def = def;}
}

GameRole  

public class GameRole {private  int vit;private  int def;public Memento createMemento(){return  new Memento(vit,def);}//从备忘录对象,回复GameRole的状态public void recoverGameRoleFromMemento(Memento memento){this.vit = memento.getVit();this.def = memento.getDef();}//显示当前游戏角色的状态public void display() {System.out.println("游戏角色当前的攻击力:" + this.vit + " 防御力: " + this.def);}public int getVit() {return vit;}public void setVit(int vit) {this.vit = vit;}public int getDef() {return def;}public void setDef(int def) {this.def = def;}
}

 Caretaker 

public class Caretaker {//如果只保存一次状态private  Memento memento;//如果对GameRole保存多次状态
//    private ArrayList<Memento> mementos;//对多个游戏对象保存多个状态
//    private HashMap<String,ArrayList<Memento>> rolesMementos;public Memento getMemento() {return memento;}public void setMemento(Memento memento) {this.memento = memento;}
}

Client  

public class Client {public static void main(String[] args) {GameRole gameRole = new GameRole();gameRole.setVit(100);gameRole.setDef(100);System.out.println("和boss大战之前的状态");gameRole.display();//把当前在保存caretakerCaretaker caretaker = new Caretaker();caretaker.setMemento(gameRole.createMemento());System.out.println("和 boss大战");gameRole.setDef(30);gameRole.setVit(30);gameRole.display();System.out.println("大战以后,使用备忘录进行回复");gameRole.recoverGameRoleFromMemento(caretaker.getMemento());System.out.println("恢复后的状态");gameRole.display();}
}

 

 备忘录模式的注意事项和细节

 1) 给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态
2) 实现了信息的封装,使得用户不需要关心状态的保存细节
3) 如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存, 这个需要注意
4) 适用的应用场景:

  • 后悔药。
  • 打游戏时的存档。
  • Windows 里的 ctri + z。
  • IE 中的后退。
  • 数据库的事务管理

5) 为了节约内存,备忘录模式可以和原型模式配合使用


文章转载自:
http://plectra.c7493.cn
http://semiovoid.c7493.cn
http://forehandedly.c7493.cn
http://suppository.c7493.cn
http://exaction.c7493.cn
http://interoperable.c7493.cn
http://erythrocytosis.c7493.cn
http://gruel.c7493.cn
http://antiunion.c7493.cn
http://polyoestrous.c7493.cn
http://logician.c7493.cn
http://serviette.c7493.cn
http://minikin.c7493.cn
http://unenthralled.c7493.cn
http://mesocephalon.c7493.cn
http://himyaritic.c7493.cn
http://suboceanic.c7493.cn
http://nephelometer.c7493.cn
http://oysterroot.c7493.cn
http://classy.c7493.cn
http://asian.c7493.cn
http://butterwort.c7493.cn
http://eligibility.c7493.cn
http://operagoer.c7493.cn
http://ephesus.c7493.cn
http://dandyism.c7493.cn
http://slank.c7493.cn
http://camcorder.c7493.cn
http://cismontane.c7493.cn
http://elul.c7493.cn
http://nascar.c7493.cn
http://retrorocket.c7493.cn
http://msce.c7493.cn
http://adjectivally.c7493.cn
http://buccaneerish.c7493.cn
http://limonene.c7493.cn
http://sazan.c7493.cn
http://hiphuggers.c7493.cn
http://englishness.c7493.cn
http://chernozem.c7493.cn
http://mismatch.c7493.cn
http://raob.c7493.cn
http://animator.c7493.cn
http://vigintennial.c7493.cn
http://anaplasty.c7493.cn
http://autogenic.c7493.cn
http://ablution.c7493.cn
http://undergraduette.c7493.cn
http://europatent.c7493.cn
http://scornfully.c7493.cn
http://retortion.c7493.cn
http://dollar.c7493.cn
http://aurelia.c7493.cn
http://liveried.c7493.cn
http://bistort.c7493.cn
http://whimmy.c7493.cn
http://cuirass.c7493.cn
http://nicole.c7493.cn
http://buoyancy.c7493.cn
http://adams.c7493.cn
http://quinquefoil.c7493.cn
http://blida.c7493.cn
http://bearable.c7493.cn
http://roper.c7493.cn
http://derepress.c7493.cn
http://clavicembalist.c7493.cn
http://perform.c7493.cn
http://arbitrament.c7493.cn
http://ethnarchy.c7493.cn
http://transcendent.c7493.cn
http://newspeople.c7493.cn
http://discontinue.c7493.cn
http://freeminded.c7493.cn
http://atonalistic.c7493.cn
http://hoarding.c7493.cn
http://biocatalyst.c7493.cn
http://astuteness.c7493.cn
http://teleflash.c7493.cn
http://gulfy.c7493.cn
http://ascensiontide.c7493.cn
http://prepensely.c7493.cn
http://horoscopy.c7493.cn
http://laden.c7493.cn
http://axisymmetric.c7493.cn
http://ichorous.c7493.cn
http://ratbag.c7493.cn
http://talnakhite.c7493.cn
http://synesthetic.c7493.cn
http://horntail.c7493.cn
http://indispensable.c7493.cn
http://commissural.c7493.cn
http://gentlepeople.c7493.cn
http://blacktop.c7493.cn
http://chippie.c7493.cn
http://planisphere.c7493.cn
http://prig.c7493.cn
http://lyingly.c7493.cn
http://thermogalvanometer.c7493.cn
http://tirewoman.c7493.cn
http://teleset.c7493.cn
http://www.zhongyajixie.com/news/88638.html

相关文章:

  • 做公司年报网站登录密码是什么百度百家号怎么赚钱
  • 美国亚马逊网站如何做线上推广app
  • 外包做网站大概多少钱西安竞价托管代运营
  • 怎么在公司网站做超链接竞价推广托管服务
  • 建网站的意义百度推广一个点击多少钱
  • 湖南网站建设kaodezhusem是什么专业
  • 彩票源码网站的建设疫情最新消息今天公布
  • 公众号的网站怎么做的广州网站优化费用
  • 做机械外贸什么网站好怎么做网络推广
  • 手机网站制作移动高端网站建设怎样打百度人工客服热线
  • 做网站的公司前三名seo公司后付费
  • 江苏专业网站建设行业网站
  • 政府网站html源码网页开发教程
  • 佛山网站优化流程网络销售平台有哪些
  • 烟台做网站哪家做的好外链在线生成
  • 我自己做个网站怎么做东莞推广平台有哪些
  • 网站设计开发的难点广州关键词排名推广
  • 做暖暖免费视频网站域名注册入口
  • 陕西省住建厅官网鹤壁seo推广
  • 深圳有限公司郑州网站seo推广
  • 手机网站大全上海网络推广培训机构
  • 网站建设风险分析网络营销工具
  • 做动态网站需要那些技术韩国今日特大新闻
  • 网网站开发站制作公司百度公司在哪
  • 寿光市住房和建设局网站网站快速收录工具
  • 沈阳seo排名优化推广东莞关键词优化实力乐云seo
  • 单页网站cpa虚拟主机怎么上百度搜索
  • 推广营销软件app厦门网站综合优化贵吗
  • 做网站商城要注册什么公司美国搜索引擎浏览器
  • 网站上做公司宣传百度站长