20.状态模式
状态模式 一、状态模式 1.状态模式 1)状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换 2)当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类 2.原理类图 1)Context 类为环境角色,用于维护State实例,这个实例定义当前状态 2)State是抽象状态角色,定义一个接口封装与Context的一个特点接口相关行为 3)ConcreteState 具体的状态角色,每个子类实现一个与Context的一个状态相关行为 二、应用实例 1.应用实例要求 定义出一个接口叫状态接口,每个状态都实现它。 接口有扣除积分方法、抽奖方法、发放奖品方法 状态转换关系图 2.思路分析 3.代码实现 /** * 状态模式测试类 */ public class ClientTest { public static void main(String[] args) { // 创建活动对象,奖品有1个奖品 RaffleActivity activity = new RaffleActivity(1); // 我们连续抽300次奖 for (int i = 0; i < 30; i++) { System.out.println("--------第" + (i + 1) +