标签(空格分隔):职责链模式
职责链模式(责任链模式):使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
职责链模式中,除最后一个节点外,每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
职责链模式主要解决:将职责链上的对象行为隐藏起来,请求对象无须关心请求的传递和处理细节,包括在职责链上的对象也不必知道完整的职责链条,只需要知道自己的下一位请求处理者即可,将发送者和多个请求处理者解耦
优点: 1、降低了系统耦合度。 2、简化了对象。使得所有的对象(包括请求者和处理者)不需要知道链的完整结构。3、增强代码的灵活性,更新功能时只需要调整节点结构即可。
纯的与不纯的责任链模式
- 一个纯的职责链模式 要求一个具体的处理者对象只能在两个行为中选择一个: 一、承担责任,二、将责任推给后续节点。不允许出现某一个具体处理者对象在承担了一部分责任后又 把责任向下传的情况;另外,在一个纯的责任链模式里面,一个请求必须被某一个处理者对象所接收;
在实际例子中很难找到一个纯的责任链模式,经常出现的是在一个责任链条中,前序链条会将请求做部分处理然后转发给后续对象,后续对象继续处理直到最后得到结果为止。但是即使是不纯的责任链模式也要考虑并解决一个请求极有可能走到链的末端也得不到处理的情况。