Java设计模式-责任链模式
2017-12-05 11:20
302 查看
概念
使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递改请求,直到有对象处理它为止。角色说明
Handler:抽象处理者角色,声明一个处理请求的方法,并保持对下一个处理节点Handler对象的引用。
ConcreteHandler1(ConcreteHandler1): 具体的处理者,对请求进行处理,如果不处理就讲请求转发给下一个节点上的处理对象。
实例
抽象处理者package com.test.dyb.testdesign; /** * <pre> * author : duyb * time : 2017/12/05 * desc : 抽象处理者 * version: 1.0 * </pre> */ public abstract class Handler { /** * 下一节点矗处理着 */ protected Handler successor; /** * 请求处理 * * @param condition 请求处理条件 */ public abstract void handleRequest(String condition); }
具体处理者1
package com.test.dyb.testdesign; /** * <pre> * author : duyb * time : 2017/12/05 * desc : 具体处理着 * version: 1.0 * </pre> */ public class ConcreteHandler1 extends Handler { @Override public void handleRequest(String condition) { if ("ConcreteHandler1".equals(condition)) { System.out.println("ConcreteHandler1 handled"); } else { //继续转交给下一个节点处理 successor.handleRequest(condition); } } }
具体处理者2
package com.test.dyb.testdesign; /** * <pre> * author : duyb * time : 2017/12/05 * desc : 具体处理着 * version: 1.0 * </pre> */ public class ConcreteHandler2 extends Handler { @Override public void handleRequest(String condition) { if ("ConcreteHandler1".equals(condition)) { System.out.println("ConcreteHandler1 handled"); } else { //继续转交给下一个节点处理 successor.handleRequest(condition); } } }
客户端
package com.test.dyb.testdesign; /** * <pre> * author : duyb * time : 2017/12/04 * desc : 使用原型客户端 * version: 1.0 * </pre> */ public class Client { public static void main(String[] args) { ConcreteHandler1 concreteHandler1 = new ConcreteHandler1(); ConcreteHandler2 concreteHandler2 = new ConcreteHandler2(); //设置concreteHandler1的下一个节点 concreteHandler1.successor = concreteHandler2; concreteHandler1.handleRequest("ConcreteHandler2"); } }
小结
优点降低耦合度,便于拓展,提高代码灵活性。
缺点
如果链中处理者过多必定会影响性能,特别是在一些递归调用中。
使用场景
1.多个对象可以处理统一请求,但具体谁处理在运行时动态决定。2.在请求的处理者不明确的情况下,向多个对象的一个提交请求。
3. 需要动态指定一组对象处理请求。
相关文章推荐
- java设计模式-责任链模式(Chain Of Resposibility)
- java设计模式之责任链模式
- 【java设计模式】责任链模式
- 走穿java23种设计模式-15责任链模式详解
- Java设计模式之责任链模式、职责链模式
- Java进阶篇设计模式之八 ----- 责任链模式和命令模式
- Java设计模式笔记之责任链模式
- Java设计模式之责任链模式、职责链模式
- Java与设计模式-责任链模式
- Java与设计模式-责任链模式
- Java开发中的23种设计模式之十七:责任链模式(Chain of Responsibility)
- Java设计模式透析之 ——责任链模式(Responsibility)
- JAVA开发的23种设计模式之 — 责任链模式
- Java设计模式之责任链模式
- Java开发中的23种设计模式详解----责任链模式(Chain of Responsibility)
- 我的Java设计模式-责任链模式
- 我的Java设计模式-责任链模式
- Java-马士兵设计模式学习笔记-责任链模式-模拟处理Reques Response
- JAVA设计模式-责任链模式
- java设计模式第5弹--责任链模式