设计模式-状态模式
状态模式的使用
代码中包含大量与对象状态有关的条件语句。
方法
将各种具体的状态类抽象出来。优点
- 结构清晰,避免了过多的switch…case或if…else语句的使用。
- 很好的体现了开闭原则和单一职责原则,想要增加状态就增加子类,想要修改状态就修改子类即可。
- 封装性非常好,状态变化放置到了类的内部来实现,外部调用不需要知道类内部如何实现状态和行为的变换。
缺点
子类会太多,也即类膨胀。使用场景
- 行为随状态改变而改变的场景。
- 条件、分支判断语句的替代者。
应用实例
- 电梯,有运行状态、开门状态、闭门状态、停止状态等。
- 一日从早到晚自身的状态,比如工作状态、学习状态等。
- 运动员可以有正常状态、非正常状态和超长状态。