状态模式是一种对象的行为型模式,允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式封装了状态的转换过程,但是它需要枚举可能的状态,因此,需要事先确定状态种类,这也导致在状态模式中增加新的状态类时将违反开闭原则,新的状态类的引入将需要修改与之能够进行转换的其他状态类的代码。状态模式的使用必然会增加系统类和对象的个数。
优点:定位指定状态的行为,并且针对不同状态来划分行为,使状态转换显式进行。
使用场景:
1)对象的行为依赖于其状态,并且该对象必须在运行时根据其状态修改其行为。
2)操作具有大量以及多部分组成的取决于对象状态的条件语句。
State 模式