菜鸟硕枫设计模式系列之19 备忘录模式
发布日期:2021-10-01 08:45:13
浏览次数:1
分类:技术文章
本文共 2565 字,大约阅读时间需要 8 分钟。
memoto pattern是一种保存对象以前状态的一种行为模式,可以做undo redo等命令的储存者,也可以做打怪升级的复活储存,比较简单。 备忘录模式类图: [img]http://dl.iteye.com/upload/attachment/364902/5fe76af2-c6bc-345e-a349-1a95600715a3.jpg[/img] 说明:当然Enimy类可以注入BaseCondition,这里偷懒了,直接码上了。 具体代码示例: 人物基本属性package memotoPattern; public class BaseCondition { private int blood; public BaseCondition( int blood) { this.blood= blood; } public void setBlood(int blood) { this.blood = blood; } public int getBlood() { return blood; } }hero类:
package memotoPattern; public class Hero { private BaseCondition baseCondition; private Memoto memoto; public void setBaseCondition(BaseCondition baseCondition) { this.baseCondition = baseCondition; } public BaseCondition getBaseCondition() { return baseCondition; } public void setMemoto(Memoto memoto) { this.memoto = memoto; } public Memoto getMemoto() { return memoto; } public BaseCondition denfend(){ baseCondition.setBlood(baseCondition.getBlood()-20); return baseCondition; } public void fight(Enimy enimy){ int enimyBlood = enimy.getBlood()-10; enimy.setBlood(enimyBlood); if(enimyBlood<0){ System.out.println("hero won"); } } public void recallHero(){ if(this.getBaseCondition().getBlood()<0){ System.out.println("hero return to fight"); this.setBaseCondition(memoto.getBaseCondition()); } } }Enimy 类
package memotoPattern; public class Enimy { private int blood; public void setBlood(int blood) { this.blood = blood; } public int getBlood() { return blood; } public void fight(Hero hero){ int heroBlood = hero.getBaseCondition().getBlood()-20; if(heroBlood<0){ System.out.println("hero died"); } } }备忘录:
package memotoPattern; public class Memoto { private BaseCondition baseCondition; public void setBaseCondition(BaseCondition baseCondition) { this.baseCondition = baseCondition; } public BaseCondition getBaseCondition() { return baseCondition; } }测试类:
package memotoPattern; public class MemotoTest { public static void main(String[]args){ BaseCondition baseCondition = new BaseCondition(100); Memoto memoto = new Memoto(); memoto.setBaseCondition(baseCondition); Hero hero = new Hero(); hero.setBaseCondition(baseCondition); hero.setMemoto(memoto); Enimy enimy = new Enimy(); enimy.setBlood(300); while(true){ if(hero.getBaseCondition().getBlood()<=0) hero.recallHero(); hero.fight(enimy); if(enimy.getBlood()<0) break; enimy.fight(hero); hero.denfend(); } } }备注:当然可以做个备忘录链 可以根据选择确定恢复到哪个状态了。
转载地址:https://blog.csdn.net/iteye_2655/article/details/81970495 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月14日 11时36分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
70%求职者因此被拒,你还不避开这些“雷区”?!
2019-04-29
办法不在多,有用就行!用Dropout解决过度拟合问题
2019-04-29
色情演员识别?绝对是人脸识别最糟糕的应用……
2019-04-29
让强化学习逃离“乏味区域陷阱”,试着加点噪音吧!
2019-04-29
超详细Spring Boot面试问题集锦,死角一个不留!
2019-04-29
10个业余时间可完成的项目,助你飞速提升编码能力!
2019-04-29
网络爬虫初涉——用python爬取网络小说
2019-04-29
Pycharm+tensorflow dropout 学习(三)
2019-04-29
Pycharm+tensorflow CNN 学习(四)
2019-04-29
用python暴力破解压缩包密码
2019-04-29
基于OpenCV 将图片进行预处理,转变为MNIST图片格式
2019-04-29
PyCharm+Tensorflow CNN调用训练好的模型进行预测 (五)
2019-04-29
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29
OpenCV+python识别并打印HSV颜色
2019-04-29
2021-03-29
2019-04-29
网络攻击与防御--引言
2019-04-29
网络攻击与防御--网络协议漏洞
2019-04-29
sql注入: 判断注入点类型
2019-04-29
千人千面Elasticsearch实战学习笔记
2019-04-29