1.定义
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
2.结构图
- Handler:定义职责的接口,通常在这里定义处理请求的方法,可以在这里实现后继链。
- ConcreteHandler:实现职责的类,在这个类中,实现对在它职责范围内请求的处理,如果处理,就继续转发请求给后继者。
- Client:职责链的客户端,向链上的具体处理对象提交请求,让职责链负责处理。
3.本质
职责链模式的本质:分离职责,动态组合。
4.Code Demo
Handler.java
package org.fool.cor; public abstract class Handler { protected Handler successor; public void setSuccessor(Handler successor) { this.successor = successor; } public abstract void handleRequest(); }
ConcreteHandler1.java
package org.fool.cor; public class ConcreteHandler1 extends Handler { @Override public void handleRequest() { boolean someCondition = false; if (someCondition) { System.out.println("ConcreteHandler1 invoked..."); } else { if (successor != null) { successor.handleRequest(); } } } }
ConcreteHandler2.java
package org.fool.cor; public class ConcreteHandler2 extends Handler { @Override public void handleRequest() { boolean someCondition = false; if (someCondition) { System.out.println("ConcreteHandler2 invoked..."); } else { if (successor != null) { successor.handleRequest(); } } } }
ConcreteHandler3.java
package org.fool.cor; public class ConcreteHandler3 extends Handler { @Override public void handleRequest() { boolean someCondition = true; if (someCondition) { System.out.println("ConcreteHandler3 invoked..."); } else { if (successor != null) { successor.handleRequest(); } } } }
Client.java
package org.fool.cor; public class Client { public static void main(String[] args) { Handler handler1 = new ConcreteHandler1(); Handler handler2 = new ConcreteHandler2(); Handler handler3 = new ConcreteHandler3(); handler1.setSuccessor(handler2); handler2.setSuccessor(handler3); handler1.handleRequest(); } }
相关推荐
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的... 这是第20节:行为型模式ChainOfResponsibility职责链模式
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的... 这是第14节:行为型模式ChainofResponsibility职责链模式
### (行为型模式) Chain Of Responsibility 职责链模式 #### 李建忠 jianzhong.lee@gmail.com #### 设计模式论坛: forum.softcompass.com #### 上海祝成科技高级培训讲师 www.softcompass.com #### 请求的发送者...
《C++设计模式:职责链模式的深度解析与实践》 设计模式是软件工程中的一种经验总结,它为解决常见的编程问题提供了可复用的解决方案。在C++中,职责链模式(Chain of Responsibility)是一种行为设计模式,其核心...
ChainofResponsibility:(1)、意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为支。(2)、适用性:A、有多个...
责任链模式是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象能够处理这个请求。在C#中,责任链模式可以用来解耦发送者和接收者之间的依赖关系,使得系统更加灵活和可扩展。 **基本...
在本大作业中,我们将设计一个公司经费申请系统,使用模板方法模式、职责链模式和观察者模式来解决实际问题。下面是详细的设计过程和实现代码。 应用场景 公司经费申请系统是一个典型的业务流程系统。该系统允许...
职责链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者,使得系统中的对象可以互相不知道...
第20章 循序渐进:职责链模式 (ChainofResponsibility) 第21章 独具匠心:命令模式 (Command) 第22章 步调一致:访问者模式 (Visitor) 第23章 左右逢源:调停者模式 (Mediator) 第24章 白纸黑字:备忘录模式 ...
行为型简介职责链模式(ChainofResponsibility)命令模式(Command)解释器模式(Interpreter)迭代器模式(Iterator)中介者模式(Mediator)备忘录模式(Memento)观察者模式(Observer)状态模式(State)策略模式(Strategy)模板...
行为型模式包括十一中设计模式:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式...
9. ChainofResponsibility模式,责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 10. Iterator模式,迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露...
ChainofResponsibility模式(职责链模式):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 Iterator模式...
13. **ChainOfResponsibility模式**:责任链模式避免硬编码一个接收者和发送者的连接。请求沿着链传递,直到某个对象处理它。 14. **Command模式**:命令模式将请求封装为一个对象,以便使用不同的请求、队列请求、...
- ChainofResponsibility模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 - Iterator模式:提供一种方法...
7. **责任链模式(Chain of Responsibility)**:责任链模式允许将请求沿着一系列对象传递,直到找到合适的处理者。`ChainofResponsibility.h`可能定义了处理者接口和多个具体处理者类,它们构成了责任链。 8. **状态...