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