状态模式 (State Pattern)
状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。该模式将状态封装成独立的类,并将请求委托给当前的状态对象,当对象的内部状态发生变化时,其行为也会随之改变。
一、基础部分
1. 意图
允许一个对象在其内部状态改变时改变它的行为,使对象看起来似乎修改了它的类。
2. 场景
典型应用:
- 对象的行为取决于它的状态,并且必须在运行时根据状态改变行为
- 操作中含有大量与对象状态相关的条件语句
- 需要实现状态转换逻辑
具体案例:
- 电梯控制系统(停止、运行、故障等状态)
- 订单状态流转(待支付、已支付、已发货等)
- 游戏角色状态(正常、中毒、眩晕等)
- 工作流引擎状态管理
3. 模式结构
-
上下文(Context)定义客户端感兴趣的接口,维护一个具体状态类的实例,这个实例定义了当前的状态。
-
抽象状态(State)定义一个接口以封装与上下文的一个特定状态相关的行为。