设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)

 

24.1 APP 抽奖活动问题

 

请编写程序完成 APP 抽奖活动 具体要求如下:

1) 假如每参加一次这个活动要扣除用户 50 积分,中奖概率是 10%

2) 奖品数量固定,抽完就不能抽奖

3) 活动有四个状态: 可以抽奖、不能抽奖、发放奖品和奖品领完

4) 活动的四个状态转换关系图(下图)

设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)

24.1 状态模式基本介绍

基本介绍

1) 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换

2) 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类

24.2 状态模式的原理类图

 

设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)

 

 

对原理类图的说明-即(状态模式的角色及职责)

1) Context 类为环境角色,  用于维护 State 实例,这个实例定义当前状态

2) State 是抽象状态角色,定义一个接口封装与 Context  的一个特点接口相关行为

3) ConcreteState 具体的状态角色,每个子类实现一个与 Context 的一个状态相关行为

24.1 状态模式解决 APP 抽奖问

1) 应用实例要求

完成 APP 抽奖活动项目,使用状态模式.

2) 思路分析和图解(类图)

定义出一个接口叫状态接口,每个状态都实现它。

接口有扣除积分方法、抽奖方法、发放奖品方法

设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)

3)代码实现

设计模式(二十二)——状态模式(APP抽奖活动+借贷平台源码剖析)

 

 

package com.lin.state; /** * 状态抽象类 * * @author Administrator * */ public abstract class State { // 扣除积分 - 50 public abstract void deductMoney(); // 是否抽中奖品 public abstract boolean raffle(); // 发放奖品 public abstract void dispensePrize(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxssw.html