`

职责链模式Chain of Responsibility分离职责,动态组合

 
阅读更多
使多个对象都有机会处理请求,从而避免请求的发送者和接收者直接的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

public abstract class Handler {
  protected Handler successor;
  public void setSuccessor(Handler successor) {
    this.successor = successor;
  }
  public abstract void handleRequest();
}

public class ConcreteHandler1 extends Handler {
  public void handleRequest() {
    boolean someCondition = false;
    if(someCondition) {
      System.out.println("");
    } else {
      if(this.successor != null) {
        this.successor.handleRequest();
      }
    }
  }
}

public class ConcreteHandler2 extends Handler {
  public void handleRequest() {
    boolean someCondition = false;
    if(someCondition) {
      System.out.println("");
    } else {
      if(this.successor != null) {
        this.successor.handleRequest();
      }
    }
  }
}

客户端代码:
Handler h1 = new ConcreteHandler1();
Handler h2 = new ConcreteHandler2();

h1.setSuccessor(h2);
h1.handleRequest();

要注意在标准的职责链模式中,只要有对象处理了请求,这个请求就到此为止,不再被传递和处理了。

Web应用开发中的过滤器Filter,就类似于一个功能链,每个过滤负责自己的处理,然后转交给下一个过滤器,直到把所有的过滤器都走完,最后进入到Servlet中进行处理。
分享到:
评论

相关推荐

    设计模式 - 职责链模式(C++实例)

    职责链模式(Chain of Responsibility)是一种行为设计模式,它的核心思想是将一系列处理请求的对象组织成一条链,每个对象都包含对请求的处理或传递的责任。在C++中实现职责链模式,我们可以创建一个抽象处理器类,...

    javascript设计模式 – 职责链模式原理与用法实例分析

    职责链模式(Chain of Responsibility Pattern)是设计模式中的一种对象行为型模式,它的核心思想是建立一条处理请求的链条,每个对象都包含处理请求的一部分责任,请求沿着链传递,直到被某个对象处理。这种模式...

    JavaScript设计模式.pdf

    11. 职责链模式(Chain of Responsibility Pattern): 职责链模式是用来消除请求的发送者和接收者之间的耦合。它的主要作用是降低对象之间的耦合,提高系统的灵活性和可扩展性。 这些设计模式可以帮助开发者编写...

    C#职责链模式实例详解

    职责链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到被某个对象处理。这种模式的核心在于,每个处理者对象都包含对下一个处理者的引用,使得请求可以...

    Java c# 设计模式

    行为型模式涉及对象间交互和责任分配,例如策略模式(Strategy)、观察者模式(Observer)和职责链模式(Chain of Responsibility)。 1. 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。在...

    设计模式迷你手册最新

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    设计模式之美—学习笔记

    职责链模式(Chain of Responsibility)让多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。 在实际编程中,理解并灵活运用设计模式能够提升代码质量,增强系统的可扩展性和可维护性。学习设计...

    Head First 设计模式 源代码(完整)

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    Java 设计模式最佳实践

    十、职责链模式(Chain of Responsibility) 职责链模式将请求的发送者和接收者解耦,多个对象形成一个处理请求的链条,请求沿着链条传递,直到某个对象处理。 以上设计模式是Java开发中的核心概念,理解和熟练应用...

    设计模式那点事

    行为型模式着重于对象之间的职责分配和交互,包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer...

    MFC框架中的设计模式分析

    2. **职责链(Chain of Responsibility)** 职责链模式允许将多个对象链接成一个链,请求在链上逐个传递,直到找到合适的处理者。MFC利用此模式处理Windows的消息系统。当一个消息发送时,它会沿对象链传递,每个...

    设计模式 含代码及讲解

    行为型模式则涉及对象之间的交互和责任分配,例如观察者模式(Observer)、策略模式(Strategy)和职责链模式(Chain of Responsibility)。 在“设计模式 含代码及讲解”中,你可能会学到以下关键点: 1. **单例...

    java 模式 设计与实现

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    图解java设计模式_学习笔记_java开发

    行为型模式如策略(Strategy)、观察者(Observer)和职责链(Chain of Responsibility)等,关注对象之间的交互和行为传递。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在Java中,可以使用双重...

    经典的设计模式的书籍 <<设计模式>>

    如单例模式(Singleton)、建造者模式(Builder)、观察者模式(Observer)、装饰器模式(Decorator)、代理模式(Proxy)、享元模式(Flyweight)、桥接模式(Bridge)、组合模式(Composite)、策略模式(Strategy...

    c++ 各种设计模式 以及各种应用

    10. **职责链模式(Chain of Responsibility Pattern)** 职责链模式避免将请求的发送者和接收者耦合在一起,而是将多个处理对象链接成一条链,请求沿着链传递,直到被某个对象处理。在C++中,可以使用指针链式结构来...

    设计模式教程

    行为型模式涵盖了策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility)、命令...

    设计模式迷你手册最近的

    职责链模式(Chain of Responsibility)让多个对象有机会处理请求,从而避免硬编码的接收者和发送者之间的耦合;命令模式(Command)将请求封装为对象,以便使用不同的请求、队列请求或支持撤销操作。 设计模式不是...

    JAVA设计模式思想(英文).

    职责链(Chain of Responsibility)模式避免硬编码的接收者,让请求沿着处理者链传递;命令(Command)模式将请求封装为一个对象,以便使用不同的请求、队列请求或记录请求日志;迭代器(Iterator)模式提供一种方法...

    关于Java 23种设计模式的有趣见解.docx

    除了这些,还有其他的设计模式,例如装饰器模式(Decorator)、代理模式(Proxy)、外观模式(Facade)、享元模式(Flyweight)、职责链模式(Chain of Responsibility)、命令模式(Command)、解释器模式...

Global site tag (gtag.js) - Google Analytics