状态模式(State Pattern)的定义
(1)定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
①状态和行为,它们的关系可以描述为“状态决定行为”
②因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变。看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样。
(2)状态模式的结构和说明
①Context:环境,也称上下文,通常用来定义客户感兴趣的接口,同时维护一个来具体处理当前状态的实例对象。
②State:状态接口,用来封装与上下文的一个特定状态所对应的行为。
③ConcreteState:具体实现状态处理的类,每个类实现一个跟上下文相关的状态的具体处理。
思考状态模式
(1)状态模式的本质:根据状态来分离和选择行为
(2)状态和行为
①状态模式的功能就是把状态和状态对应的行为分离出来,每个状态所对应的功能处理封装在一个独立的类里。通过维护状态的变化,来调用不同状态对应的不同功能。
②为了操作不同的状态类,定义一个状态接口来约束它们,这样外部就可以面向这个统一的状态接口编程,而无须关心具体的状态类实现了。
③状态和行为是相关联的,它们的关系可以描述为状态决定行为。因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变,看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样。
(3)行为的平行性
①注意是平行性,而不是平等性。所谓的平行性指的是各个状态的行为所处的