- 一、角色
- 环境类(Context):对状态进行管理
- 抽象状态类(State):所有状态类的抽象接口
- 具体状态类(ConcreteState):具体状态实现类
- 二、适用场景
- 对象的行为依赖于它的状态(属性)并且可以根据它的状态改变而改变它的相关行为
- 代码中包含大量与对象状态有关的条件语句,这些条件语句的出现,会导致代码的可维护性和灵活性变差,不能方便地增加和删除状态,使客户类与类库之间的耦合增强。在这些条件语句中包含了对象的行为,而且这些条件对应于对象的各种状态
- 三、实例
- 图1是一个播放器的实例,播放器有开始状态和停止状态,其中State是抽象状态,StartState、StopState是具体状态实现,Context则是环境类,它有一个类型为State的属性,可以对当前状态进行管理和保存
- 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/state
图-1