状态模式
状态模式 :
- 它主要解决多种状态转换时,需要对外输出不同的问题。状态和行为是一一对应的,状态之间可以互相交换。
- 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来改变了其类。
应用场景:审批流
如下图:
- 箭头为行为:即方法
- 圆形为状态:即 对象的状态
注意:当一个对象的内在状态改变时,允许改变其行为;
![](https://i-blog.csdnimg.cn/blog_migrate/6540dcbefbdc81475e72ffd794b3f46a.png)
实现原理:
- Context 类为环境角色,用于维护state实例。这个实例定义当前状态。
- State 是抽象状态角色,定义的一个借口封装与context的一个特点接口相关行为。
- ConcreteState 具体的状态角色,每个子类实现一个与context的一个状态。
![](https://i-blog.csdnimg.cn/blog_migrate/59d0f8aaf726ff44c5fb748fe0cc6795.png)
代码实例后续补充
实例分析
- 订单流程分析图
![](https://i-blog.csdnimg.cn/blog_migrate/3b71aece7346c4ede88f96b12ab792e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b5e2bf334efc6fbfe88fd96e4c87126c.png)