最近做了一个多节点状态监控的应用,每个节点都能实时改变状态,要求网络中所有节点都能实时展示当前的状态。
![](https://img.haomeiwen.com/i25380/ad29292932b9f88b.png)
最简单的做法,是各节点把状态发送到服务器,然后所有节点每隔一段时间轮询更新状态即可。
但这样太浪费资源了,因为节点状态大部分时间都是正常的,只有极少时段出现状态变化,轮询会浪费绝大部分计算资源。
另一种是消息推送。这个好处是按需获取资源,计算开销较少。问题在于,节点有很多行为,都能够触发状态的改变。
![](https://img.haomeiwen.com/i25380/80a6ad1ad7726d7d.png)
如果每个这样的操作,我们都去做一次消息推送的话,随着操作种类的增多,代码会越来越难以维护。因为,如果后面需要修改推送行为的话,将要更改N次!
通过下面的方式,重构了代码。其思想是,找到这些行为的共同点,然后用这个点来触发推送。
![](https://img.haomeiwen.com/i25380/7cb95c08edc5a8c0.png)
经过重构后,代码瞬间变得清爽干净了许多。
网友评论