本文实例讲述了Java语言使用备忘录模式实现过关类游戏功能。分享给大家供大家参考,具体如下,希望对大家学习Java语言有所帮助。
一.模式定义
备忘录模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象外部保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
二.模式举例
1模式分析
我们借用过关类游戏来说明这一模式。
2备忘录模式静态类图
3代码示例(黑箱备忘录模式)
3.1创建备忘录窄接口一INarrowMemento
package com.demo.memento;
/**
* 备忘录窄接口(不提供任何方法,外部对象不能访问备忘录对象内部信息)
*
* @author
*
*/
public interface INarrowMemento {
}
复制代码
3.2备忘录发起者一Hero
package com.demo.originator;
import java.util.Random;
import com.demo.memento.INarrowMemento;
/**
* 挑战者
*
* @author
*
*/
public class Hero {
// 血液值
private int blood;
// 武力值
private int sword;
// 随机数
private final Random random = new Random();
// 构造方法初始化 内容
public Hero() {
this.blood = 100;
this.sword = 100;
}
// 创建备忘录保存内容
public INarrowMemento createMemento() {
System.out.println("创建备忘录...");
return new Memento(this.blood, this.sword);
}
// 恢复备忘录内容
public void restoreFromMemento(INarrowMemento memento) {
System.out.println("恢复备忘录中的状态...");
if (memento != null) {
Memento memento2 = (Memento) memento;
this.blood = memento2.getBlood();
this.sword = memento2.getSword();
}
}
/**
* 挑战BOSS
*/
public int koBoss() {
// 当血液值<=0 时 挑战失败 假设战胜BOSS的概率为2%
// 判断时候还有血液值
if (this.blood <= 0 || this.sword <= 0) {
System.out.println(this.toString());
System.ou