使多个对象有机会出来请求,从而避免请求者和请求处理者之间的耦合,将这些处理请求的对象链成一个串,将请求一直往下抛,直到有处理者处理请求。
纯责任链模式:
每一个处理请求对象,要么完全不处理请求直接往下抛,要处理完整的请求并返回。
复杂责任链模式:
每一个请求者对象可以处理请求的一部分,然后再向下抛出,直到有处理者处理完毕。
一、使用场景
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 ) 书中通过一幅图,...
适配器模式(Adapter Pattern) 提供者模式(Provider Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 原型模式(Prototype Pattern) 责任链模式(Chain of Responsibility Pattern) 中介者模式...
Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) Interpreter ( 解释器模式 ) Iterator ( 迭代器模式 ) Mediator ( 中介者模式 ) Memento ( 备忘录模式 ) Observer ( 观察者模式 ) State ( ...
- 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器模式(Iterator) - 备忘录模式(Memento) - 状态模式(S
责任链模式(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) 备忘录模式...