这是管道,责任链还是其他?

Jas*_*ker 5 architecture design-patterns pipeline chain-of-responsibility

我正在构建一个多进程体系结构,这似乎是管道和责任链的奇怪融合。本质上,我有一系列通过队列链接的处理程序。每个处理程序将接收一个代表输入数据的对象,将其转发给下一个处理程序,以便它可以开始处理它,然后确定它是否可以对该数据执行任何操作。

我不认为可以将其称为管道,因为一个步骤实际上并不依赖于下一个步骤。这似乎也不是传统的责任链,因为一个处理程序无法阻止其他处理程序处理该数据。此设计是否有名称可以帮助我记录此体系结构?还是我只需要称呼它为“责任管道”?

Pad*_*oti 5

我仍然认为这是责任链,即使不停止也有责任。

几种模式非常相似,并且确实有所不同。我认为查看模式是否适合案例的最好方法是查看其意图。从GoF书中:

责任链“通过给多个对象一个处理请求的机会,避免将请求的发送者耦合到其接收者。将接收的对象链接起来,并沿着链传递请求,直到一个对象处理它为止。” (第223页)

因此,如果您的处理程序与通过链的对象之间没有耦合,那么即使处理该对象,该对象也始终会落在链的末端并不重要。