我目前正在为一个项目开发 USB 固件。在弄清楚如何最好地处理来自主机的服务请求时,我决定实施责任链模式。
在我的应用程序中,对于从主机检索到的每个请求,始终只有一个处理程序。所以基本上我提前设置了我的处理程序链,循环从等待主机的请求开始。请求被传递给“根”处理程序,后者通过检查请求的一部分来决定是处理它还是将它传递到链中。处理完请求后,我们将返回等待来自主机的另一个请求。
同样,只有一个处理程序会处理请求。未处理的请求,即遍历整个处理程序链,是错误条件。
从www.sourcemaking.com阅读责任链模式后,这句话引起了我的注意(讨论部分的最后一段):
当每个请求仅由一个处理程序处理时,或者当客户端对象知道应该由哪个服务对象处理请求时,不要使用责任链。
为什么这是真的有一个很好的实际理由吗?在我看来,在作者警告的情况下使用责任链是完全有效的。谁能给我一些关于为什么这将是一个糟糕的设计选择的见解?