对于状态设计模式, 每个状态都有自己的具体类, 它们实现一个公共接口....以开灯关灯为例子, 状态模型的本质分为3点:
①状态(关灯和开灯)
②变迁(从关灯到开灯, 以及从开灯到关灯)
③触发器(灯开关)
所以状态模式都需要一个参与者来跟踪对象所处的状态....状态类希望接收一个Light类实例做参数,.
setState方法是为了设置一个当前状态 需要一个状态对象作为实参, 一旦触发一个状态, 这个状态就会向Light类发送信息, 指定当前状态....客户
Client的所有请求都是通过Light发出, Client和任何状态类之间都没有直接连接, 包括IState接口.下面的Client显示了触发两个状态中所有方法的请求....4个方法, 它们都需要结合到Light类中.