675 B
675 B
Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.(当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。)
- State 抽象状态角色
- ConcreteState 具体状态角色
- Context 环境角色
- 把状态对象声明为常量,有几个状态对象就声明几个常量
- 环境角色具有状态抽象角色定义的所有行为,具体执行使用委托方式
优点
- 结构清晰
- 遵循设计原则
- 封装性非常好
缺点
子类太多,类膨胀
使用场景
- 行为随状态改变而改变
- 条件、分支判断语句的替代者