状态机模式

什么是状态机:

状态机的官方定义如下:

The intent of the STATE pattern is to distribute state-specific logic across classes that represent an object’s state.

状态模式是为了将与状态有关的逻辑分写在代表对象状态的类中,而状态机会对传入的状态做出不同的响应,代码层面上表示为对不同类的调用。

状态机的四个要素:

State:状态。一个状态机至少要包含两个状态

Event:事件。事件就是执行某个操作的触发条件或者口令

Action:动作。事件发生以后要执行动作

Transition:变换。也就是从一个状态变化为另一个状态。指的是两个状态之间的一种关系,表明对象在第一个状态中执行一定的动作,并将在某个事件发生同时某个特定条件满足时进行第二个状态。


有哪些状态机:

参考:https://blog.csdn.net/varyall/article/details/103090043


举个栗子:

电商系统中,单个订单往往涉及多个状态的变化,下单,支付 ,发货,签收,退换货等。每个状态的改变需要不同的业务代码对数据库做出相应的修改。这种场景下,状态机模式的使用就能让取代很多if else让代码更好维护,逻辑更加清晰。


写个Demo:

一个电商系统的小demo

枚举类:


状态管理流转方法


取消订单operator

取消订单processor

你可能感兴趣的:(状态机模式)