备忘录模式(设计模式_20)
2017-01-01 16:26
176 查看
备忘录模式,在一个对象保存内部状态,然后在这个状态之外的对象保存整个状态,注意:要注意内存的管理;
备忘录模式,通俗易懂的话语来讲,其实就是将整个对象保存在内存中,这样会有什么好处呢?
例如:以前我们玩单机游戏,(打飞机游戏)刚开始玩的时候生命值是100,等打了很多很多战机之后,受过很多伤害,生命值慢慢的就变成了0,然后就输了,输了之后会有一个(重新再来一局)操作,可以恢复到初始状态,其实在打飞机游戏之前,就已经把(游戏初始值)存到备忘录对象了,
当在(重新再来一局)操作时,只需恢复即可
例如:电视(风云雄霸天下里面),雄霸的三分归元气已经修炼到第九层,在与(风云)最后决战中,被风云合并之后的摩诃无量打败,
然后自废武功,自废武功的时候,把三分归元气备份到了云端,经过多年的修炼又从云端下载下来了,重新达到了初始状态,这个过程
使用备忘录模式来完成,请看案例:
以下举例来完成:
运行结果:
![](https://img-blog.csdn.net/20170101162415068?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTk2NzAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006
备忘录模式,通俗易懂的话语来讲,其实就是将整个对象保存在内存中,这样会有什么好处呢?
例如:以前我们玩单机游戏,(打飞机游戏)刚开始玩的时候生命值是100,等打了很多很多战机之后,受过很多伤害,生命值慢慢的就变成了0,然后就输了,输了之后会有一个(重新再来一局)操作,可以恢复到初始状态,其实在打飞机游戏之前,就已经把(游戏初始值)存到备忘录对象了,
当在(重新再来一局)操作时,只需恢复即可
例如:电视(风云雄霸天下里面),雄霸的三分归元气已经修炼到第九层,在与(风云)最后决战中,被风云合并之后的摩诃无量打败,
然后自废武功,自废武功的时候,把三分归元气备份到了云端,经过多年的修炼又从云端下载下来了,重新达到了初始状态,这个过程
使用备忘录模式来完成,请看案例:
以下举例来完成:
package com.oop.demo2; /** * 此对象为雄霸对象 * @author Liudeli * */ public class XionBa { /** * 这个值就是雄霸的(三分归元气)的杀伤力值 */ private int lethality; public void setLethality(int lethality) { this.lethality = lethality; } public int getLethality() { return lethality; } /** * 保存(三分归元气)武功到云端(备忘录) * @return */ public Cloud createCloud() { return new Cloud(lethality); } /** * 把武功(三分归元气)从云端下载下来,雄霸就恢复到了当年的雄风 * @param cloud */ public void setXionBa(Cloud cloud) { this.lethality = cloud.getLethality(); } /** * 使出三分归元气最大威力 */ public void hit() { System.out.println("雄霸使出三分归元气 ----> ○○ 杀伤力:" + lethality); } }
package com.oop.demo2; /** * 风云对象 * @author Liudeli * */ public class FengYun { /** * 风云合并使出最厉害的(摩诃无量) */ public void hit() { System.out.println("风云合并,摩诃无量 ----> OO 杀伤力:" + 89556); } }
package com.oop.demo2; /** * 云端对象(备忘录) * @author Liudeli * */ public class Cloud { /** * 用于存放雄霸的三分归元气 */ private int lethality; public Cloud(int lethality) { this.lethality = lethality; } public int getLethality() { return lethality; } }
package com.oop.demo2; /** * 管理者 * @author Liudeli * */ public class Manager { private Cloud cloud; public Cloud getCloud() { return cloud; } public void setCloud(Cloud cloud) { this.cloud = cloud; } }
/** * 测试程序(备忘录模式) * @author Liudeli * */ public class Main { public static void main(String[] args) { // 风云来找雄霸,决一死战 FengYun fengYun = new FengYun(); fengYun.hit(); // 雄霸使出(三分归元气)武功 XionBa xionBa = new XionBa(); xionBa.setLethality(78958); xionBa.hit(); System.out.println("此战雄霸已败,雄霸逃亡中..."); System.out.println(""); // 雄霸为了保证性命,自废武功,把武功(三分归元气)存到云端(备忘录) Manager manager = new Manager(); manager.setCloud(xionBa.createCloud()); System.out.println("雄霸的三分归元气已废!"); xionBa.setLethality(0); xionBa.hit(); System.out.println(""); // 雄霸经过多年修炼,在把存到云上面的武功(三分归元气)下载下来 System.out.println("雄霸经过多年修炼,在把存到云上面的武功(三分归元气)下载下来"); xionBa.setXionBa(manager.getCloud());; xionBa.hit(); } }
运行结果:
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006
相关文章推荐
- 设计模式20:Memento 备忘录模式(行为型模式)
- 设计模式20---设计模式之备忘录模式(Memento)(行为型)
- JAVA设计模式(20):行为型-备忘录模式(Memento)
- java学习笔记-设计模式20(备忘录模式)
- JAVA设计模式(20):行为型-备忘录模式(Memento)
- 设计模式学习笔记(20)——备忘录模式
- 设计模式--备忘录模式(Memento)
- 设计模式20:Strategy Pattern (策略模式)
- 设计模式笔记(21)---备忘录模式(行为型)
- 设计模式(20)-Visitor Pattern
- 设计模式--备忘录模式(Memento)
- Net设计模式实例之备忘录模式(Memento Pattern)(1) 推荐
- 设计模式笔记(20)---职责链模式(行为型)
- 设计模式23:Memento Pattern (备忘录模式)
- 设计模式--备忘录模式(Memento)
- 设计模式之七——备忘录模式
- 设计模式(20)-Visitor Pattern
- [设计模式]Memento pattern(备忘录模式)在Paint.net中的应用
- 设计模式笔记(20)---职责链模式(行为型)
- .NET设计模式(20):解释器模式(Interpreter Pattern)