责任链模式(Chain of Responsibility )的定义如下:
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving object and pass the request along the chain until an object handles it.
谷歌翻译:为多个对象提供处理请求的机会,避免将请求的发送者耦合到其接收者。链接接收对象并沿链传递请求,直到有对象处理它为止。
说得通俗一点,对于一个请求,将它交给请求的处理者。有多个可以处理请求的处理者,每个处理者都可以处理一个或者多个请求,如果一个处理者接收到了某个请求,可以选择处理这个请求,也可以选择将请求传递给下一个处理者,直到已经传递给最后一个处理者为止。这个请求传递的过程就像是一条链子,每个处理者是一个结点。
发出请求的客户端并不知道链上的哪一个对象会处理这个请求,只需将请求交给第一个处理者就行。具体是哪一个处理者处理,怎么处理,都被封装了起来。新的处理者被加入到系统,也不会影响到请求客户端的操作,系统可以在不影响客户端的情况下动态地重新组织和分配责任。