设计模式之责任链模式
2016-10-05 17:33
337 查看
设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果
调试不很方便
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
责任链模式
使多个对象都有机会处理,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连城一条链,并沿着这条链传递该请求,直到有对象处理它为止责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果
通用类图
案例
java// 抽象处理者 public abstract class Handler{ private Handler nextHandler; // 每个处理者都必须对请求作出处理 public final Response handleMessage(Request request){ Response response =null; // 判断是否是自己的处理级别 if(this.getHandlerLevel().equals(request.getRequestLevel())){ response = this.echo(response); }else{ // 不属于自己的处理级别 // 判断是否有下一个处理者 if(this.nextHandler !=null){ response = this.nextHandler.handleMessage(response); } } return response; } // 设置下一个处理者是谁 public void setNext(Handler _handler){ this.nextHandler=_handler; } // 每个处理者都有一个处理级别 protected abstract Level getRequestLevel(); // 每个处理者都必须实现处理任务 protected abstract Response echo(Request request); } //具体的处理者 public class ConcreteHandler1 extends Handler{ // 定义自己的处理逻辑 protected Response echo(Request request){ ... return null; } // 设置自己的处理级别 protected Level getHandlerLevel(){ ... return null; } } public class ConcreteHandler2 extends Handler{ // 定义自己的处理逻辑 protected Response echo(Request request){ ... return null; } // 设置自己的处理级别 protected Level getHandlerLevel(){ ... return null; } } public class ConcreteHandler3 extends Handler{ // 定义自己的处理逻辑 protected Response echo(Request request){ ... return null; } // 设置自己的处理级别 protected Level getHandlerLevel(){ ... return null; } } public class Level{ .... } public class Request{ // 请求的等级 public Level getRequestLevel(){ ... return null; } } public class Response{ ... } //场景类 public class Client{ public static void main(String[] args){ //声明所有的处理节点 Handler handler1= new ConcreteHandler1(); Handler handler2= new ConcreteHandler2(); Handler handler3= new ConcreteHandler3(); // 设置链中的阶段顺序 handler1.setNext(handler2); handler2.setNext(handler3); // 提交请求,返回结果 Response response = new handler1.handlerMessage(new Request()); } }
优点
责任链模式非常显著的优点是将请求和处理分开。请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌,两者解耦,提高系统的灵活性。缺点
性能问题调试不很方便
相关文章推荐
- 设计模式之责任链模式
- 设计模式——责任链模式(Chain Of Responsibility)
- 设计模式之责任链模式(七)
- 常用设计模式总结--责任链模式
- C语言和设计模式(责任链模式)
- 设计模式--责任链模式(COR)
- 设计模式学习-每日一记(23.责任链模式)
- 极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
- C语言和设计模式(责任链模式) 07
- 设计模式——责任链模式小结
- 设计模式--责任链模式(COR)
- 设计模式 Design Parttern ——责任链模式Chain of Responsibility
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- 23种设计模式之责任链模式(Chain of Responsibility)
- 设计模式--责任链模式(COR)
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- 十 设计模式之责任链模式
- HeadFirst 设计模式学习笔记9--责任链模式
- 设计模式利剑10-责任链模式
- GoF 23个经典的设计模式13--行为模式之 责任链模式(未完代续)