模式定义
一个对象在其内部状态改变时改变其行为,这个对象我们可以称为状态对象,所以状态模式是一种对象行为型模式。
模式结构
Context:环境类
Context类也可以称之为上下文类,实际上就是拥有状态的对象,可以理解为状态管理器。
State:抽象状态类
抽象状态类可以是一个接口类或者抽象类,反正实现的话都是通过具体状态类。抽象状态类,封装环境类不同状态下的所有动作方法。
ConcreteState:具体状态类
具体实现类就比较容易理解了,就是继承抽象状态类,实现具体的方法,不一定所有的抽象方法都有重写,根据环境类状态的改变进行重写就好,其实也是根据状态改变改变动作方法。
模式适用场景
状态模式适用于行为随状态改变的业务场景,比如状态改变了,行为也会做成改变。
业务代码中很多条件的情况,加入一些代码有很多的if…else,并且经常改变,这种情况就可以使用状态模式进行编写。