状态模式让我们远离战战兢兢
假设存在下图这样一个状态转换
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。