一,动机
当一个对象的状态发生改变时,有时候我们会希望它的行为也会随着状态的改变而改变。
比如一个人(对象),没钱的时候(状态)晚上只能吃泡面(行为),但是当他有钱了(状态发生改变),那么他就可以大口吃肉了(行为也发生改变)。
这个时候就需要一种方式,在对象的状态发生改变的时候也同样改变它的行为。
State模式就是这样一种模式,允许一个对象在它的内部状态发生改变的时候也改变它的行为,因为行为方法变得不同了,就好像这个类也发生了改变一样。
二,适用情况
- 对象的行为取决于自身的状态,并且需要在运行时根据自身的状态来决定自己的行为。
- 当一个操作包含多个条件分支,并且这些分支的条件判断都取决于对象的状态时,可以使用state模式将分支放入类中,使得对象根据状态的不同调用不同的方法。