24.1 APP 抽奖活动问题
请编写程序完成 APP 抽奖活动 具体要求如下:
1) 假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10%
2) 奖品数量固定,抽完就不能抽奖
3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完
4) 活动的四个状态转换关系图(下图)
24.1 状态模式基本介绍基本介绍
1) 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换
2) 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类
24.2 状态模式的原理类图
对原理类图的说明-即(状态模式的角色及职责)
1) Context 类为环境角色, 用于维护 State 实例,这个实例定义当前状态
2) State 是抽象状态角色,定义一个接口封装与 Context 的一个特点接口相关行为
3) ConcreteState 具体的状态角色,每个子类实现一个与 Context 的一个状态相关行为
24.1 状态模式解决 APP 抽奖问1) 应用实例要求
完成 APP 抽奖活动项目,使用状态模式.
2) 思路分析和图解(类图)
定义出一个接口叫状态接口,每个状态都实现它。
接口有扣除积分方法、抽奖方法、发放奖品方法
3)代码实现
package com.lin.state; /** * 状态抽象类 * * @author Administrator * */ public abstract class State { // 扣除积分 - 50 public abstract void deductMoney(); // 是否抽中奖品 public abstract boolean raffle(); // 发放奖品 public abstract void dispensePrize(); }