责任链模式: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理他未止.
使用场景:
多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态觉得
在请求处理者不明确的情况下向对个对象中的一个提交一个请求
需要动态指定一组对象处理请求
对于职责链中的一个处理者对象,其只有两个行为,一是处理请求, 二是将请求转送给下一个节点,不允许某个处理者对象在处理了请求后又将请求转送给上一个节点的情况.
责任链模式在android源码中比较类似的实现是对事件的分发处理.
当客户提交一个请求时,请求时沿链传递至有一个对象复杂处理它, 这样使得接受者和发送者都没有对方的明确信息,且链中的对象也并不知道链的结构,结果是职责链可简化对象的相互连接,他们仅需保持一个指向其后继者的引用,而不需保持它所有的候选接受者的引用.这也就大大的降低了耦合度.