状态模式让我们远离战战兢兢

假设存在下图这样一个状态转换

1断线状态

2已发送地址请求状态

3上线状态

4同步状态

5同步完成状态

6同步完成后发送确认请求状态

7收到确认请求应答

1-->2 发送地址请求

1-->3 收到地址请求

2-->3收到地址请求应答

3-->4发送同步请求

4-->5收到同步请求应答

5-->6发送地址请求确认

6-->7 收到确认应答

4-->3 未收到同步请求应答或同步完成校验没有通过

7-->6未收到确认应答

2-->1 3-->1 4-->1 5-->1 6-->1 7-->1 链接测试失败设为断线状态

我们如果不采用状态模式,势必收到某种动作然后设置状态,存在大范围的条件判断,主要是考虑到状态的回转与重置,当维护的时候需要修改庞大的条件判断,让人战战兢兢。

但是如果采用状态模式,每个状态能处理哪些状态进行单独的封装,既不会漏掉状态,又不容易修改是时候出bug。

原文地址:https://www.cnblogs.com/blachie/p/3657318.html