设计模式——状态模式

    xiaoxiao2021-03-26  21

    状态(State)模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的状态。 State:状态,定义抽象接口; ConcreteState:具体状态类,每个子类实现一个Context的一个状态相关的行为; Context:定义客户感兴趣的接口,维护一个ConcreteState子类的实例,这个实例定义为当前状态; 适用性: (1)一个对象的行为取决于它的状态,并且它必须在允许时刻根据状态改变它的行为; (2)一个操作有大量多分支的条件语句,且分支依赖于对象的状态。这个状态通常用一个或多个枚举常量表示; 优点: (1)将所有与一个特定状态相关的行为放入一个类中,把不同的状态分割开来,使得增加新的状态很方便; (2)使的状态的转换更加清晰; (3)当State对象没有实例变量时,Context对象可以共享一个State对象; 缺点: 状态过多,会造成大量子类不方便管理 实现: (1)为了让转换更灵活, Context中需要增加一个接口ChangeState,让State对象转换当前状态。缺点是一个State中包含其他State,造成了各个子类的依赖; (2)可以使用表将每一个可能的输入映射到一个后继状态,这种方法将条件代码映射到一个查找表。缺点是效率低,可读性差,传入参数不方便; (3)Context可以将自身作为一个参数传递给处理该请求的状态对象,让状态对象在方便时可以访问Context; (4)当进入状态在运行时不可知时,并且不经常变更状态时,选择需要State对象时才创建并随后销毁;当State对象存储大量信息,并且状态改变很频繁时,应该预先创建并且始终不销毁它们;
    转载请注明原文地址: https://ju.6miu.com/read-661169.html

    最新回复(0)