状态模式
案例
张三所在公司欲开发一款纸牌游戏软件,在该游戏软件中用户角色具有入门级(Primary)、熟练级(Secondary)和高手级(Professional)三种等级,角色的等级与其积分相对应,游戏胜利将增加积分,失败则扣除积分。入门级具有最基本的游戏功能 ,熟练级增加了游戏胜利积分加倍功能,高手级在熟练级基础上再增加换牌功能。用程序来表示如下:
1.首先定义了 Player
类:
public class Player {
// 初始积分为 0
private int integral = 0;
// 初始等级为入门级
private String grade = "入门级";
public void play() {
System.out.println("开始游戏");
System.out.println("当前积分为:" + this.integral + "\t当前等级为:" + this.grade);
System.out.println("游戏进行中");
changeCards();
System.out.println("游戏结束");
// 这里方便演示结果,直接设置为胜利
System.out.println("游戏胜利,获得100积分");
score();
changeGrade();
System.out.println("当前积分为:" + this.integral + "\t当前等级为:" + this.grade);
}
// 换牌操作
private void changeCards() {
if (grade.equals("Primary") || grade.equals("Secondary")) {
System.out.println("该等级太低,不支持换牌操作");
} else if (grade.equals("Professional")) {
System.out.println("换牌成功");
}
}
// 计算得分
private void score() {
int integral = 100;
if (grade.equals("Primary")) {
System.out