星空网 > 软件开发 > ASP.net

【设计模式】18、备忘录模式

【设计模式】18、备忘录模式

 

 

 1 package com.shejimoshi.behavioral.Memento; 2  3  4 /** 5  * 功能:游戏角色 6  * 时间:2016年3月6日下午9:39:18 7  * 作者:cutter_point 8 */ 9 public class GameRole10 {11   private int attackPower;  //攻击力12   private int blood;  //血量13   private int defense;  //防御力14   15   public void getInitState()16   {17     attackPower = 100;18     blood = 100;19     defense = 100;20   }21   22   public void display()23   {24     System.out.println("攻击力:" + attackPower + "\t生命力:" + blood + "\t防御力:" + defense);25   }26   27   //保存当前存储点28   public Memento saveState()29   {30     return new Memento(attackPower, blood, defense);31   }32   33   public void recoveryState(Memento memento)34   {35     this.attackPower = memento.getAttackPower();36     this.blood = memento.getBlood();37     this.defense = memento.getDefense();38   }39   40   public void fight()41   {42     this.attackPower -= 40;43     this.blood -= 40;44     this.defense -= 60;45   }46 }

 

 1 package com.shejimoshi.behavioral.Memento; 2  3  4 /** 5  * 功能:存储状态管理者 6  * 时间:2016年3月6日下午10:10:23 7  * 作者:cutter_point 8 */ 9 public class RoleStateCaretaker10 {11   private Memento memento;12 13   public Memento getMemento()14   {15     return memento;16   }17 18   public void setMemento(Memento memento)19   {20     this.memento = memento;21   }22   23 }

 

 1 package com.shejimoshi.behavioral.Memento; 2  3  4 /** 5  * 功能:游戏存储点,备忘录 6  * 时间:2016年3月6日下午9:46:03 7  * 作者:cutter_point 8 */ 9 public class Memento10 {11   private int attackPower;  //攻击力12   private int blood;  //血量13   private int defense;  //防御力14   15   public Memento(int attackPower, int blood, int defense)16   {17     this.attackPower = attackPower;18     this.blood = blood;19     this.defense = defense;20   }21 22   public int getAttackPower()23   {24     return attackPower;25   }26 27   public void setAttackPower(int attackPower)28   {29     this.attackPower = attackPower;30   }31 32   public int getBlood()33   {34     return blood;35   }36 37   public void setBlood(int blood)38   {39     this.blood = blood;40   }41 42   public int getDefense()43   {44     return defense;45   }46 47   public void setDefense(int defense)48   {49     this.defense = defense;50   }51   52 }

 

 1 package com.shejimoshi.behavioral.Memento; 2  3  4 /** 5  * 功能:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先的状态 6  * 适用:必须保存一个对象在某一个时刻的状态,这样以后需要时它才能恢复到先前的状态 7  *       如果一个用接口来让其他对象直接得到这些状态,将会暴露对象的实现细节并破坏对象封装信 8  * 时间:2016年3月6日下午8:58:55 9  * 作者:cutter_point10 */11 public class Test12 {13   public static void main(String[] args)14   {15     //开启游戏,初始化状态16     GameRole gr = new GameRole();17     gr.getInitState();//初始化状态18     gr.display();19     20     //保存进度点21     RoleStateCaretaker rsc = new RoleStateCaretaker();22     rsc.setMemento(gr.saveState());23     24     //大战boss25     gr.fight();26     gr.display();27     28     //恢复状态29     gr.recoveryState(rsc.getMemento());30     gr.display();31     32   }33 }

 

攻击力:100	生命力:100	防御力:100攻击力:60	生命力:60	防御力:40攻击力:100	生命力:100	防御力:100

  

 




原标题:【设计模式】18、备忘录模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

定价策略:https://www.goluckyvip.com/tag/3658.html
跨境电商运营的方法:https://www.goluckyvip.com/tag/36580.html
跨境电商运营方案:https://www.goluckyvip.com/tag/36581.html
跨境电商运营工资高吗:https://www.goluckyvip.com/tag/36582.html
跨境电商运营工作累吗:https://www.goluckyvip.com/tag/36583.html
跨境电商运营工作内容:https://www.goluckyvip.com/tag/36584.html
重庆品胜科技与星苹台达成合作 助力部队现代化后勤建设 :https://www.kjdsnews.com/a/1836523.html
回乡创业,不知道干什么,能否推荐几个农村老家创业的好项目?:https://www.vstour.cn/a/365177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流