定义
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类
特点
- 将一群行为封装在状态对象中
- context 的行为随时可委托到那些状态对象中的一个
- context 内部的状态的改变,context 行为也会跟着改变
- context 的客户对状态对象了解不多
状态模式与策略模式
策略模式
- 客户通常主动指定 context 所需要组合的策略对象
- 通常只有一个最适合的策略对象
状态模式
- 客户可能无需知道 context 内部组合的状态
- 可以随着时间使用不同的状态对象
总结
- 策略模式通过组合不同的对象来改变行为
- 状态模式在 context 内简单地改变状态对象来改变行为