基本概念
状态模式(State Pattern)是一种行为型设计模式,它将各个状态封装成单独的类,然后根据这些状态改变执行不同的行为,实现状态与行为的分离。
实现的模块有:
-
Context(环境):维护一个具体状态对象的实例,并将请求委托给相应的状态对象来处理。
-
State(状态):定义了一个与 Context 的状态相关的接口。
-
ConcreteState(具体状态):实现了 State 接口,定义了在某个特定状态下要执行的行为。
使用场景
- 一个对象的行为在运行时,必须根据状态的变化而改变时。
- 当一个操作中包含大量判断状态的条件语句时。
- 需要把状态和动作实现分离时。
实现
QT状态机系统(FSM)
FSM(Finite State Machine) 意为有限状态机,用于管理状态转换以控制对象的行为。对应模块为:
-
Context(环境):状态机的管理者 QStateMachine,负责管理状态的转换以及状态机的执行 。
-
State(状态):QState 定义了一个与 QAbstractState 的状态相关的接口。
-
ConcreteState(具体状态):QFinalState 是 QState 的子类,表示状态机中的最终状态,是状态的具体实现。