使多个对象有机会出来请求,从而避免请求者和请求处理者之间的耦合,将这些处理请求的对象链成一个串,将请求一直往下抛,直到有处理者处理请求。
纯责任链模式:
每一个处理请求对象,要么完全不处理请求直接往下抛,要处理完整的请求并返回。
复杂责任链模式:
每一个请求者对象可以处理请求的一部分,然后再向下抛出,直到有处理者处理完毕。
一、使用场景
1、有多个对象可以处理同一个请求,具体哪个对象处理该请求需要等到运行时刻再确定。
2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3、可动态指定一组对象处理请求,客户端可以动态创建职责链来处理请求,还可以改变链中处理者之间的先后次序。
缺点:
1、在处理者总多的情况下比较耗时。
2、不能保证每一个请求都被处理。
例:
package responsibility; /** *create by datao.wang 2014-2-11-下午5:03:32 *抽象处理者 */ public abstract class Handler { //处理方法 可以添加处理的请求对象作为参数 public abstract void handler(HandlerChain chain); } package responsibility; import java.util.ArrayList; import java.util.List; /** *create by datao.wang 2014-2-11-下午6:52:34 *请求处理者管理链 */ public class HandlerChain extends Handler { //下一个请求处理者 protected List<Handler> handler=new ArrayList<Handler>(); int index=0; @Override public void handler(HandlerChain chain) { if(index==handler.size()) return;//循环完了退出 if(handler.size()!=0){//循环处理请求 Handler h=handler.get(index++); h.handler(chain); } } public HandlerChain addHandler(Handler h){ handler.add(h); return this; } } package responsibility; /** *create by datao.wang 2014-2-11-下午5:08:24 *具体请求处理者1 */ public class Handler1 extends Handler { @Override public void handler(HandlerChain chain) { if("xxx".equals("如果请求该handler1处理,否则把责任往下传递")){ System.out.println("handler1 处理......"); }else { System.out.println("handler1-----抛出"); chain.handler(chain); } } } package responsibility; /** *create by datao.wang 2014-2-11-下午5:08:24 *具体请求处理者2 */ public class Handler2 extends Handler { @Override public void handler(HandlerChain chain) { if("xxx".equals("如果请求该handler2处理,否则把责任往下传递")){ System.out.println("handler2 处理......"); }else { System.out.println("handler2-----抛出"); chain.handler(chain); } } } package responsibility; /** *create by datao.wang 2014-2-11-下午5:08:24 *具体请求处理者3 */ public class Handler3 extends Handler { @Override public void handler(HandlerChain chain) { if("xxx".equals("如果请求该handler3处理,否则把责任往下传递")){ System.out.println("handler3 处理......"); }else { System.out.println("handler3-----抛出"); chain.handler(chain); } } }
相关推荐
### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) Interpreter ( 解释器模式 ) Iterator ( 迭代器模式 ) Mediator ( 中介者模式 ) Memento ( 备忘录模式 ) Observer ( 观察者模式 ) State ( ...
- 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器模式(Iterator) - 备忘录模式(Memento) - 状态模式(S
适配器模式(Adapter Pattern) 提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式...
责任链模式(Chain of Responsibility) 命令模式(Command) 解释器模式(Interpreter) 迭代器模式(Iterator) 中介者模式(Mediator) 备忘录模式(Memento) 观察者模式(Observer) 状态模式(State) 策略模式(Strategy) 模板...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,...
责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式...