面向对象设计模式---备忘录模式

mac2025-08-22  2

备忘录

备忘录定义:保存一个对象的某个状态,方便与适当的时候回复对象。(恢复、还原、返回浏览器、保存副本)
三种角色:
普通类(源发器)–:可以创建备忘录,可以使用备忘录恢复模式备忘录:存储普通类的内部状态,处理普通类和负责人负责人/管理者(相当于游戏角色):保存备忘录,但是不对备忘录进行操作

例子实现过程: 1.创建备忘录类(Memorandum.java) —实现储备体力值和魔法值的重载方法 —get、set方法备份体力值和魔法值 2.创建(负责人/管理者)(Administrator.java)类 —实现管理员get、set保存备忘录 3.创建游戏角色(相当于源发器) —初始化玩家属性方法、体力值魔法值的初始化 —输出当前游戏角色的体力值和魔法值 —创建备忘录和还原备忘录方法 —打boss方法 4.测试备忘录方法(Test.java)

1.Memorandum.java—备忘录

//备忘录 public class Memorandum { private int Physical;//体力值 private int Magic; //魔法值 //备忘录里存储体力值和魔法值方法 public Memorandum(int physical, int magic) { this.Magic=magic; this.Physical=physical; } //get、set备份体力值和魔法值 public int getPhysical() { return Physical; } public void setPhysical(int physical) { this.Physical = physical; } public int getMagic() { return Magic; } public void setMagic(int magic) { this.Magic = magic; } }

2.Administrator.java—管理者类

//管理者 public class Administrator { private Memorandum m; //管理员get、set保存备忘录 public Memorandum getM() { return m; } public void setM(Memorandum m) { this.m = m; } }

3.GamePeople.java—游戏角色类

//游戏玩家 public class GamePeople { //玩家属性 private int Physical;//体力值 private int Magic; //魔法值 //初始化值 public void init(){ this.Physical=100; this.Magic=100; } //输出玩家当前状态的体力值和魔法值 public void show(){ System.out.println("当前的体力值:"+Physical); System.out.println("当前的魔法值:"+Magic); } //创建备忘录 public Memorandum creatMemorandum(){ return new Memorandum(Physical,Magic); } //还原备忘录 public void reductionMemorandum(Memorandum m){ this.Physical=m.getPhysical(); this.Magic=m.getMagic(); } //打boss方法 public void killBoss(int Physical,int Magic){ this.Physical=Physical; this.Magic=Magic; } }

4.Test.java—测试备忘录的使用

public class Test { public static void main(String[] args) { GamePeople g1=new GamePeople();//创建游戏角色 g1.init();//初始化角色的体力值和魔法值 g1.show();//输出角色的体力值和魔法值 //备份初始化状态 Administrator a =new Administrator();//创建管理员 a.setM(g1.creatMemorandum()); //打怪 System.out.println("-----我在打第一波Boss-----"); g1.killBoss(99, 55); g1.show(); Administrator a1 =new Administrator();//创建管理员 a1.setM(g1.creatMemorandum()); System.out.println("-----我在打第二波Boss-----"); g1.killBoss(6, 2); g1.show(); //发现打不赢,需要恢复到初始化 System.out.println("-----恢复体力和魔法值到第二波前-----"); g1.reductionMemorandum(a1.getM()); g1.show(); } }

测试结果:

最新回复(0)