状态模式允许对象在其内部状态发生变化时,改变其行为。
比如,空调在关机状态时的行为只能是开机;而在开机状态时的行为可以是制冷、制热、关机等。
Context 环境角色(上下文角色),定义客户端感兴趣的接口,客户端只与环境对象进行交互,而不会与任何状态对象直接交互,它需要保存具体状态对象的引用,这个具体状态对象代表环境对象当前所处的状态
State 抽象状态角色,为所有的具体状态类定义公共接口
ConcreteState 继承或实现抽象状态角色,一个具体状态类用于定义一组特定的行为