通过机制解决问题的设计原则

  • 核心:考虑当前设计是否存在“漏洞”
  • 意图:杜绝类似问题的再次发生

案例:消息传递
例如有A设备和B设备。两个设备需要进行通信。

这里写图片描述

问题:当A设备无法收到B设备的RSP消息时,会发生什么?

当A设备无法收到RSP消息时,就无法发送ACK消息给设备B,然后两个设备的就进入了相互等待的状态。

这里写图片描述

问题:如何解决这个问题呢?

我们可以让设备B定时重发RSP消息,这样就可以避免两个设备进入死锁的状态了。

这里写图片描述

问题:但是当我们需要新增一个设备的时候,是否需要在每个设备中添加这种重发机制,这样就会使得代码的复用性不高。还有更好的办法解决这个问题吗?

解决方案二:增加消息中转层
- 负责所有设备之间通信消息的发送和接收
- 处理所有通信异常的处理(阻塞重发,报告错误,etc)

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/small_prince_/article/details/80646340
今日推荐