`

职责链模式ChainOfResponsibility

 
阅读更多

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();
    }
}

 

 

  • 大小: 60.2 KB
分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈\20 行为型模式ChainOfResponsibility职责链模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的... 这是第20节:行为型模式ChainOfResponsibility职责链模式

    C#面向对象设计模式纵横谈\14 行为型模式ChainofResponsibility职责链模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的... 这是第14节:行为型模式ChainofResponsibility职责链模式

    (行为型模式) Chain Of Responsibility 职责链模式

    ### (行为型模式) Chain Of Responsibility 职责链模式 #### 李建忠 jianzhong.lee@gmail.com #### 设计模式论坛: forum.softcompass.com #### 上海祝成科技高级培训讲师 www.softcompass.com #### 请求的发送者...

    C++设计模式代码资源22_职责链.zip

    《C++设计模式:职责链模式的深度解析与实践》 设计模式是软件工程中的一种经验总结,它为解决常见的编程问题提供了可复用的解决方案。在C++中,职责链模式(Chain of Responsibility)是一种行为设计模式,其核心...

    设计模式之迭代器和职责链模式

    ChainofResponsibility:(1)、意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为支。(2)、适用性:A、有多个...

    C#设计模式之ChainofResponsibility

    责任链模式是一种行为设计模式,它允许将请求沿着处理者对象的链式结构进行传递,直到某个对象能够处理这个请求。在C#中,责任链模式可以用来解耦发送者和接收者之间的依赖关系,使得系统更加灵活和可扩展。 **基本...

    软件设计模式大作业样例

    在本大作业中,我们将设计一个公司经费申请系统,使用模板方法模式、职责链模式和观察者模式来解决实际问题。下面是详细的设计过程和实现代码。 应用场景 公司经费申请系统是一个典型的业务流程系统。该系统允许...

    ChainOfResponsibility.zip

    职责链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者,使得系统中的对象可以互相不知道...

    [源代码] 《易学 设计模式》 随书源代码

    第20章 循序渐进:职责链模式 (ChainofResponsibility) 第21章 独具匠心:命令模式 (Command) 第22章 步调一致:访问者模式 (Visitor) 第23章 左右逢源:调停者模式 (Mediator) 第24章 白纸黑字:备忘录模式 ...

    设计模式之11个行为型模式

    行为型简介职责链模式(ChainofResponsibility)命令模式(Command)解释器模式(Interpreter)迭代器模式(Iterator)中介者模式(Mediator)备忘录模式(Memento)观察者模式(Observer)状态模式(State)策略模式(Strategy)模板...

    设计模式简介

    行为型模式包括十一中设计模式:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式...

    设计模式C++版

    9. ChainofResponsibility模式,责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 10. Iterator模式,迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露...

    23种设计模式(C++).pdf

    ChainofResponsibility模式(职责链模式):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 Iterator模式...

    C++常见设计模式的解析和实现

    13. **ChainOfResponsibility模式**:责任链模式避免硬编码一个接收者和发送者的连接。请求沿着链传递,直到某个对象处理它。 14. **Command模式**:命令模式将请求封装为一个对象,以便使用不同的请求、队列请求、...

    23种设计模式(C++)

    - ChainofResponsibility模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 - Iterator模式:提供一种方法...

    设计模式-行为模式

    7. **责任链模式(Chain of Responsibility)**:责任链模式允许将请求沿着一系列对象传递,直到找到合适的处理者。`ChainofResponsibility.h`可能定义了处理者接口和多个具体处理者类,它们构成了责任链。 8. **状态...

Global site tag (gtag.js) - Google Analytics