设计模式-状态模式

发布时间 2024-01-01 22:00:24作者: 轻寒

状态模式的使用

代码中包含大量与对象状态有关的条件语句。

方法

将各种具体的状态类抽象出来。

优点

  • 结构清晰,避免了过多的switch…case或if…else语句的使用。
  • 很好的体现了开闭原则和单一职责原则,想要增加状态就增加子类,想要修改状态就修改子类即可。
  • 封装性非常好,状态变化放置到了类的内部来实现,外部调用不需要知道类内部如何实现状态和行为的变换。

缺点

子类会太多,也即类膨胀。

使用场景

  • 行为随状态改变而改变的场景。
  • 条件、分支判断语句的替代者。

应用实例

  • 电梯,有运行状态、开门状态、闭门状态、停止状态等。
  • 一日从早到晚自身的状态,比如工作状态、学习状态等。
  • 运动员可以有正常状态、非正常状态和超长状态。

注意事项

在行为受状态约束的情况下可以使用状态模式,使用时对象的状态最好不要超过5个。