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

备忘录

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

例子实现过程:
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值