状态模式

20.状态模式

左心房为你撑大大i 提交于 2019-11-26 23:53:06
状态模式 一、状态模式 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) +

《设计模式与游戏完美开发》——第九周读书笔记

独自空忆成欢 提交于 2019-11-26 19:08:29
前八周学习了几种设计模式,我现在就之前学的几种设计模式中的一些小问题,进行总结一下。 状态模式 优点:1.减少错误的发生并降低维护的难度。 因为不再使用switch(m_state)来进行判断当前状态,能降低新增状态时候,未能检测到状态(可能忘记写或者写措字)的bug; 2.状态执行环境单一化 与每一个状态有关的对象及操作都被实现在一个场景状态类里面,这样特别便于修改,以及了解每一个状态对象与其搭配子系统。 3.不同的项目场景可以共享 缺点:1.状态模式的使用必然要增加系统中类和对象的个数,导致系统运行开销增大。 2.状态模式的设计与结构都比较复杂,如果使用不当将导致程序结构和代码的混乱,增加系统设计的难度。 3.状态模式对于“开闭原则”的支持并不太好,增加新的状态类需要修改那些负责状态转换的源代码,否则无法转换到新增状态;而且修改某一个状态类的行为也需要修改对应类的源代码。 说到底状态模式的本质就是一个环境对象,以及很多不同的状态对象,每次给这个环境对象设置不同的状态对象,是不是很像玩游戏给枪上子弹。 外观模式 优点:外观模式的优点可以说一眼看出,内部子系统怎么弄我不管,我用一个大控制板,把这些一罩住,那外面的怎么用,直接看这个控制板了,比如操作系统和计算机硬件,汽车控制面板和硬件。 缺点:普通人根本不知道内部怎么实现,就算内部耦合再高,性能算是最差,你在调用时候甚至沾沾自喜

delphi 判断调试状态

假如想象 提交于 2019-11-26 15:49:57
delphi 判断调试状态 DebugHook 该变量在调试状态下值为1,运行模式为0,例如,我们可以使用如下的代码来简单控制: if DebugHook=0 then DebugHook 该变量在调试状态下值为1,运行模式为0,例如,我们可以使用如下的代码来简单控制: if DebugHook=0 then 来源: https://www.cnblogs.com/westsoft/p/11324909.html