Java二十三种设计模式-责任链模式(17/23)

java23种设计模式-责任链模式 责任链模式是一种行为型设计模式,允许将请求沿着处理链传递,直到有一个处理者处理它。每个处理者决定自己处理请求或传递给下一个处理者,实现请求发送者与接收者的解耦。 阅读详情

责任链模式:实现请求处理的灵活流转

引言

在这篇博客中,我们深入探讨了责任链模式的精髓,从其定义和用途到实现方法,再到使用场景、优缺点、与其他模式的比较,以及最佳实践和替代方案,旨在指导开发者如何在适当的场景下有效运用这一模式来提高软件设计的灵活性和可维护性。

 基础知识,java设计模式总体来说设计模式分为三大类:

(1)创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

(2)结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

(3)行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

第一部分:责任链模式概述

1.1 定义与用途

责任链模式的基本定义

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求沿着处理者链进行传递,直到某个处理者能够处理该请求为止。

责任链模式是一种行为型设计模式,它通过将请求的发送者和接收者解耦,将这些请求沿着一条链传递,直到链上的某个节点能够处理该请求。这种模式允许系统在运行时动态地添加或修改处理请求的方式,而无需修改已有的代码。

解释为何需要责任链模式

  • 解耦请求者和处理者:责任链模式使得请求的发送者不需要知道具体的处理者是谁,只需要将请求发送到链上即可。
  • 动态处理请求:可以根据需要动态地添加或删除链上的处理者,或者改变它们的处理顺序。
  • 灵活性和可扩展性:当需要支持多种类型的请求或处理方式时,责任链模式提供了一种灵活的解决方案。
  • 简化对象的相互通信:减少了对象之间的直接交互,简化了对象间的关系。

1.2 责任链模式的组成

处理者(Handler)

  • 定义:处理者是一个接口,定义了处理请求的方法和一个指向下一个处理者的引用。
  • 职责:每个具体的处理者需要实现这个接口,并决定是否能够处理接收到的请求。

请求(Request)

  • 定义:请求是传递给处理者的对象,通常包含一些数据和信息,描述了需要被处理的事项。
  • 职责:作为处理者链中传递的信息载体。

上下文(Context)

  • 定义:上下文是请求的起始点,它知道如何创建和维护处理者链。
  • 职责:创建请求并将其传递给链上的首个处理者。

具体处理者(Concrete Handler)

  • 定义:具体处理者实现了处理者接口,具体实现了请求处理的逻辑。
  • 职责:根据请求的类型和内容决定是否处理请求,如果能够处理,则执行相应操作;否则,将请求传递给链上的下一个处理者。

角色之间的交互

  • 请求创建:上下文创建请求并将其传递给链上的第一个处理者。
  • 请求传递:每个处理者检查请求,决定是否能够处理它。如果能够处理,则执行操作;否则,将请求传递给链上的下一个处理者。
  • 请求处理:请求沿着处理者链传递,直到被某个处理者处理。

责任链模式通过将请求的发送者和接收者解耦,提供了一种灵活的方式来处理请求,使得在不修改现有代码的情况下,可以动态地改变请求的处理方式。在下一部分中,我们将通过Java代码示例来展示责任链模式的具体实现。

第二部分:责任链模式的实现

2.1 Java实现示例

以下是使用Java语言实现责任链模式的代码示例。假设我们有一个简单的审批系统,根据不同的审批金额,需要不同级别的经理来批准。

// 处理者接口
interface Approver {
    void setNextApprover(Approver next);
    void approve(PurchaseRequest request);
}

// 具体处理者:主任
class DirectorApprover implements Approver {
    private Approver nextApprover;

    @Override
    public void setNextApprover(Approver next) {
        this.nextApprover = next;
    }

    @Override
    public void approve(PurchaseRequest request) {
        if (request.getAmount() <= 5000) {
            System.out.println("Director approved: " + request);
        } else {
            if (nextApprover != null) {
                nextApprover.approve(request);
            } else {
                System.out.println("No more approvers in the chain.");
            }
        }
    }
}

// 具体处理者:部门经理
class ManagerApprover implements Approver {
    private Approver nextApprover;

    @Override
    public void setNextApprover(Approver next) {
        this.nextApprover = next;
    }

    @Override
    public void approve(PurchaseRequest request) {
        if (request.getAmount() <= 10000) {
            System.out.println("Manager approved: " + request);
        } else {
            if (nextApprover != null) {
                nextApprover.approve(request);
            } else {
                System.out.println("No more approvers in the chain.");
            }
        }
    }
}

// 请求类
class PurchaseRequest {
    private double amount;
    private String purpose;

    public PurchaseRequest(double amount, String purpose) {
        this.amount = amount;
        this.purpose = purpose;
    }

    @Override
    public String toString() {
        return "PurchaseRequest{Amount: " + amount + ", Purpose: '" + purpose + "'}";
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Approver managerApprover = new ManagerApprover();
        Approver directorApprover = new DirectorApprover();
        managerApprover.setNextApprover(directorApprover);

        PurchaseRequest request1 = new PurchaseRequest(7000, "Office supplies");
        managerApprover.approve(request1);

        PurchaseRequest request2 = new PurchaseRequest(15000, "Conference equipment");
        managerApprover.approve(request2);
    }
}

2.2 责任链中的角色和职责

处理者(Handler)

  • 职责:定义了一个处理请求的接口,包括设置下一个处理者的方法和处理请求的方法。

请求(Request)

  • 职责:封装了请求的详细信息,可以被处理者链中的任何一个处理者访问和处理。

上下文(Context)

  • 职责:在本示例中,上下文由客户端代码充当,负责创建请求并启动责任链的处理过程。

具体处理者(Concrete Handler)

  • 职责:实现了处理者接口,具体实现了请求处理的逻辑,包括判断请求是否在自己的处理范围内,以及将请求传递给链上的下一个处理者。

相互作用

  • 设置链:客户端代码负责构建责任链,通过setNextApprover方法将各个处理者连接起来。
  • 请求传递:请求从链的开始传递,每个处理者决定是否处理请求或将其传递给下一个处理者。
  • 请求处理:请求最终被能够处理它的处理者处理,或者到达链的末端仍未被处理。

责任链模式通过定义清晰的处理者角色和请求传递机制,实现了请求的动态分发和处理。这种模式在需要灵活处理请求的场景中非常有用,尤其是在请求的处理流程可能变化的情况下。在下一部分中,我们将探讨责任链模式的使用场景。

第三部分:责任链模式的使用场景

3.1 需要灵活处理请求的场景

在软件系统中,经常会遇到需要根据不同的条件以不同方式处理请求的场景。责任链模式通过将请求的发送者和接收者解耦,提供了一种灵活处理请求的方法。

讨论在需要灵活处理请求时,责任链模式的应用:

  • 多样化处理:在不同的处理者中实现不同的业务逻辑,可以根据请求的内容选择不同的处理策略。
  • 易于扩展:当需要添加新的处理方式时,只需添加一个新的处理者类,并将其加入到责任链中,无需修改现有代码。

应用实例:

  • 审批流程:在企业审批流程中,不同的审批级别可能需要不同角色的审批。责任链模式可以灵活地表示这种多级审批流程。
  • 权限验证:在权限验证系统中,可能需要根据不同的用户角色和资源类型进行不同的权限检查。

3.2 请求处理者动态指定的场景

在某些情况下,请求的处理者可能不是预设的,而是根据运行时的条件动态确定的。责任链模式允许在运行时构建处理者链,从而动态地指定请求的处理者。

分析在请求处理者可以动态指定时,责任链模式的优势:

  • 动态构建:可以根据请求的类型或内容动态地构建责任链,使得处理流程更加灵活。
  • 可配置性:通过外部配置或规则引擎来定义责任链的组成和顺序,提高了系统的可配置性。

应用实例:

  • 工作流引擎:在工作流引擎中,任务的处理顺序和处理者可以根据工作流的定义动态确定。
  • 内容管理系统:在内容管理系统中,不同类型或不同优先级的内容可能需要不同的审核流程和审核人员。

责任链模式通过允许请求沿着链传递,直到被适当处理,提供了一种强大的方法来处理请求。这种模式在实际开发中非常有价值,尤其是在需要处理多样化请求或请求处理流程可能变化的情况下。在下一部分中,我们将讨论责任链模式的优点与缺点。

 

第四部分:责任链模式的优点与缺点

4.1 优点

降低耦合度

  • 解耦请求者和处理者:责任链模式使得请求的发送者和接收者之间没有直接的联系,两者通过责任链进行交互,从而降低了耦合度。

提高系统的灵活性

  • 动态调整处理流程:可以在运行时根据需要动态地调整处理流程,如添加、删除或重新排列处理者。

易于扩展

  • 扩展新的处理者:添加新的处理者不需要修改现有代码,符合开闭原则。

简化对象交互

  • 减少直接交互:减少了对象之间的直接交互,简化了对象间的关系。

支持多样化的请求处理

  • 多种处理策略:允许系统支持多种不同的请求处理策略。

4.2 缺点

处理效率问题

  • 性能开销:请求可能需要在多个处理者之间传递,可能会带来性能开销。

请求可能无法被处理

  • 处理者缺失:如果责任链中没有处理者能够处理请求,可能会导致请求被忽略或处理失败。

调试困难

  • 问题定位:在责任链中定位问题可能比较困难,特别是当链比较长或处理逻辑复杂时。

责任链的建立和管理

  • 链的维护:需要管理责任链的建立和维护,确保链的正确性。

可能引起循环引用

  • 循环链:如果不当使用,责任链可能导致循环引用,从而引起无限循环。

责任链模式提供了一种灵活的方式来处理请求,允许请求沿着链传递,直到被适当处理。然而,它也需要谨慎使用,以避免增加系统的复杂性和维护难度。在实际应用中,根据具体需求和场景选择是否使用责任链模式是非常重要的。在下一部分中,我们将比较责任链模式与其他设计模式,并提供一些最佳实践和建议。

 

第五部分:责任链模式与其他模式的比较

5.1 与命令模式的比较

命令模式

  • 定义:命令模式将请求或操作封装为一个对象,允许用户使用不同的请求对客户进行参数化。
  • 特点:命令模式关注于将请求封装成对象,从而允许系统使用不同的请求、队列请求或记录请求。

责任链模式

  • 定义:如前所述,责任链模式通过将请求沿着链传递,直到链上的某个节点能够处理该请求。
  • 特点:责任链模式关注于请求的传递和处理,允许多个对象都有机会处理请求。

对比

  • 请求封装:命令模式强调请求的封装和存储,责任链模式强调请求的传递和处理。
  • 处理方式:命令模式通常由调用者直接执行命令,责任链模式则由多个潜在的处理者依次尝试处理请求。
  • 目的:命令模式用于支持撤销、重做等操作,责任链模式用于实现请求处理的链式传递。

5.2 与中介者模式的对比

中介者模式

  • 定义:中介者模式定义了一个中介对象,用于封装一系列对象之间的交互,从而减少这些对象之间的耦合度。
  • 特点:中介者模式关注于减少对象间的直接交互,通过中介者进行通信。

责任链模式

  • 定义:如前所述,责任链模式允许请求沿着处理者链进行传递,直到被适当处理。

对比

  • 通信方式:中介者模式通过中介者对象来转发请求和响应,责任链模式则通过链式传递请求。
  • 解耦合:中介者模式通过中介者来解耦对象间的直接引用,责任链模式通过分离请求者和处理者来解耦。
  • 灵活性:责任链模式提供了处理请求的灵活性,中介者模式提供了通信方式的灵活性。

责任链模式和命令模式、中介者模式都提供了处理请求的不同方法。每种模式都有其独特的用途和优势,选择使用哪种模式取决于具体的设计需求和场景。在下一部分中,我们将提供责任链模式的最佳实践和建议。

 

第六部分:责任链模式的最佳实践和建议

6.1 最佳实践

确保处理者链的明确终止条件

  • 终止条件:确保责任链有明确的终止条件,防止请求无限循环。

保持处理者职责单一

  • 单一职责原则:每个处理者应该只处理一种类型的请求,保持职责单一。

使用享元模式优化处理者

  • 享元模式:如果处理者之间有共享的资源或状态,可以使用享元模式来优化内存使用。

提供灵活的链构建方式

  • 灵活构建:提供灵活的方式来构建责任链,如通过配置文件或程序逻辑。

确保线程安全

  • 线程安全:在多线程环境中使用责任链模式时,确保处理者是线程安全的。

避免过度复杂的责任链

  • 简化设计:避免构建过于复杂或过长的责任链,以免增加系统的复杂性和降低性能。

6.2 避免滥用

避免在简单场景使用责任链模式

  • 简化解决方案:对于简单的请求处理,使用责任链模式可能过于复杂,应考虑更简单的解决方案。

避免处理者之间的过度耦合

  • 解耦合:保持处理者之间的松耦合,避免它们之间的依赖关系过于紧密。

避免缺乏明确的终止条件

  • 明确终止:确保责任链有明确的终止条件,防止请求处理过程中的不确定性。

6.3 替代方案

使用状态模式

  • 状态变化:当对象的状态变化需要改变其行为时,可以考虑使用状态模式。

使用策略模式

  • 算法替换:如果需要根据不同的条件执行不同的算法或行为,策略模式可能是一个更好的选择。

使用命令模式

  • 命令封装:对于需要将请求或操作封装为对象的场景,命令模式可以提供帮助。

使用中介者模式

  • 减少耦合:当系统中对象之间的通信过于复杂时,中介者模式可以减少对象间的直接耦合。

责任链模式提供了一种灵活的方式来处理请求,允许请求沿着处理者链进行传递,直到被适当处理。然而,合理使用责任链模式并避免其缺点是至关重要的。了解其替代方案可以帮助开发者根据具体需求和场景选择最合适的设计模式。在实际开发中,应根据具体情况灵活运用责任链模式,以达到最佳的设计效果。

结语

责任链模式提供了一种强大的方法来处理请求,允许请求沿着处理者链进行传递,直到被适当处理。通过本文的深入分析,希望读者能够对责任链模式有更全面的理解,并在实际开发中做出合理的设计选择。

博主还写了其他Java设计模式关联文章,请各位大佬批评指正:

(一)创建型模式(5种):

Java二十三种设计模式-单例模式(1/23)

Java二十三种设计模式-工厂方法模式(2/23)

Java二十三种设计模式-抽象工厂模式(3/23)

Java二十三种设计模式-建造者模式(4/23)

Java二十三种设计模式-原型模式(5/23)

(二)结构型模式(7种): 

Java二十三种设计模式-适配器模式(6/23)

Java二十三种设计模式-装饰器模式(7/23)

Java二十三种设计模式-代理模式(8/23)

Java二十三种设计模式-外观模式(9/23)

Java二十三种设计模式-桥接模式(10/23)

Java二十三种设计模式-组合模式(11/23)

Java二十三种设计模式-享元模式(12/23)

 (三)行为型模式(11种): 

Java二十三种设计模式-策略模式(13/23)

Java二十三种设计模式-模板方法模式(14/23)

Java二十三种设计模式-观察者模式(15/23)

Java二十三种设计模式-迭代子模式(16/23)

持续更新中......敬请关注 

23中设计模式-责任链模式《请假条去哪儿拉》 对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 责任链定义 使多个对象都有机会处理请求,避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这个链传递到该请求,直到有一个对象能处理为止。 责任链模式涉及到的角色 抽象处理者(Handler)角色:定义出一个处理请求的接口。 具体处理者(Concr... 阅读详情

相关推荐

Java行为型设计模式-责任链模式

责任链模式()是一种行为型设计模式,‌它允许多个对象处理一个请求,‌每个对象都有机会处理请求,‌如果处理不了则传递给下一个对象,‌直到请求被处理或没有对象可以处理。‌责任链模式的主要目的是通过减少请求发送者和接收者之间的耦合度来提高系统的灵活性和可扩展性。‌它通过将处理请求的责任分配给一系列的对象,‌每个对象都有机会处理请求,‌如果当前对象无法处理请求,‌则将请求传递给下一个对象,‌直到找到能够处理请求的对象。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 2032

设计模式-责任链模式(Chain of Responsibility)

责任链模式是一种面向对象设计模式,该模式中包含了一系列处理对象和命令对象。每个处理对象都有能力决定自己可以处理哪些命令对象,如果遇到无法处理的命令对象,它会将请求传递给下一个处理对象。这种模式的核心在于避免请求发送者与接收者之间的紧密耦合,让多个对象都有可能接收请求,并将这些对象连接成一条链,沿着这条链传递请求,直到有对象处理它为止。以公司员工请假为例,员工的请假请求可能有多个领导可以批准,但每个领导的批准权限不同。员工需要根据自己要请假的天数去找对应的领导签名。这就是责任链模式的一个生动实例。

miaoyl的博客 1万+

【电机学复习笔记】同步电机的特性及参数的求取

同步电机的主要特性包括:空载特性、短路特性、零功率因数负载特性、外特性和调整特性。 基于以上特性我们可以实现: 从空载特性和短路特性求同步电抗的不饱和值和短路比; 从零功率因数负载特性和空载特性确定保梯电抗(定子漏抗)和电枢反应电动势

Pantrick_的博客 2万+

【设计模式】责任链模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

一、责任链模式简介、 二、责任链模式相关设计模式、 三、责任链模式 代码示例、 1、用户账户类、 2、校验器父类、 3、用户名校验器、 4、密码校验器、 5、电话号码校验器、 6、运行测试、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 8590

容器内存黑洞排查手册:当PageCache让你的Pod莫名被OOM时

本文深入剖析了容器环境中因Linux内核PageCache机制导致Pod被OOM Killer终止的“内存黑洞”问题。文章解释了Kubernetes基于Working Set内存指标进行OOM判断的逻辑,揭示了传统监控工具与cgroup统计的差异,并通过典型场景分析、实战诊断工具和优化策略,提供了从问题定位到系统调优的完整解决方案。

weixin_29294975的博客 221

【Qt实战项目】记事本完整项目

效果图如下所示: 全部代码如下: #include “notepad.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.showMaximized(); return a.exec(); }

YIZHILIUSHA2020的博客 575

设计模式——责任链

OA系统的采购审批项目、职责链模式基本介绍、职责链模式解决 OA 系统采购审批项目

种一棵树最好的时间是十年前,其次是现在 3802

STM32寄存器级电机驱动:DRV8833 H桥与PWM调速原理

电机驱动是嵌入式控制系统的核心基础能力,其本质是微控制器通过数字信号精确控制功率器件的开关时序。理解H桥电路结构、反电动势防护机制及PWM调制原理,是实现可靠直流电机控制的前提。DRV8833作为典型双H桥驱动芯片,支持快衰减与慢衰减两种PWM调速模式,分别对应不同的电流泄放路径与动态响应特性。在STM32平台上,需结合时钟树配置、GPIO复用、定时器寄存器(PSC/ARR/CCR)精确计算,将抽象的转速需求转化为可执行的硬件操作。该技术广泛应用于智能小车、机器人关节、工业定位系统等实时运动控制场景,是掌握

weixin_42613017的博客 679

行为型设计模式——责任链模式

责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。

庄小焱 3250

Vue3 与 Bpmn-js:打造现代化 BPMN 流程设计器

随着业务流程的复杂化,流程设计器成为企业级应用中不可或缺的一部分。BPMN(Business Process Model and Notation)是一种标准的业务流程建模语言,广泛应用于业务流程管理。本文将介绍如何使用 Vue3 和 Bpmn-js 打造一个现代化的 BPMN 流程设计器。

九天的专栏 2116

C#上位机开发:西门子/三菱PLC通信,新手直接上手

对着西门子S7协议文档看半天,连“DB块地址怎么写”都搞不懂;写三菱PLC代码时,分不清MC协议和Modbus的区别,代码改来改去连不上;好不容易跑通代码,换个PLC型号又报错,不知道哪里出问题;后来发现,新手学PLC通信根本不用先啃协议文档——先跑通“能通信”的代码,再慢慢理解底层逻辑,效率至少提升3倍。西门子PLC:用S7NetPlus库(新手最友好),实现以太网通信,支持S7-200 SMART/1200/1500;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 880

23种设计模式之责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,旨在解决请求发送者和接收者之间的耦合问题。通过将多个对象连接成一条链,请求沿着这条链传递,直到某个对象决定处理该请求为止。这种模式允许系统动态地重新组织和分配责任,而不会影响客户端。

weixin_51395608的博客 1681

小白也能懂!一步步教你用FPGA加速YOLO目标检测(入门篇)

安装到 PYNQ 开发板中。该库为 PYNQ 平台提供了对量化神经网络(如 YOLO)的硬件加速支持。确保你的电脑已连接到外网,如 WiFi 或热点(手机热点理论上也可用,未实测)。当你看到安装成功的提示后,打开 Jupyter Notebook,你会发现在。趁这个机会,泡了杯茶,刷了会儿手机,顺便感慨了一下开源社区的强大……页面中多出了一些新的项目文件夹 —— 这就是我们刚才安装的。参数,浅拷贝只克隆最近一次提交,减少数据量,避免超时问题。初始化,打开该文件,即可运行我们的Tiny YOLO。

FJN110的博客 1597

23种设计模式——责任链模式

本文将结合个性化推荐系统中的广告推荐流程来讲解责任链模式,广告位经过定义的责任链 预处理—>召回模块—>粗排序模块—>精排序模块—>规则模块—> 资讯模块—>后处理:上报信息 得到个性化的推荐广告位,来讲解责任链模式在实际生产中的使用方式。 一、配置信息 jdk 版本:jdk8 框架:springboot 二、maven配置 <dependenc...

两只橙的博客 2805

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【JAVA】23种设计模式

什么是设计模式?设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

fearless的博客 1517

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java23中设计模式之责任链模式

上一节说到策略模式:https://blog.youkuaiyun.com/zhanglei082319/article/details/88980673 所谓的策略模式:就是将一些不定的业务需求抽象出来,作为一种特定的策略方式分开实现,当需要使用哪种策略时,就调用该策略的具体实现。 今天说一种新的设计模式:责任链模式 责任链模式在实际开发中应用非常广泛,绝大部分的框架源码,一般企...

码眼的博客 485

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java学习视频 java常用23种设计模式

java学习视频主要详细讲解java常用23种设计模式,此套java教程为百度网盘下载! 我曾经花了1万多报过java培训班.可能太过愚钝,感觉白学了。这套java学习视频讲的很好,我培训过,虽说学的很差,但是耳濡目染也算有点基础,写作业的时候没什么思路,但是参考了别人的思路,自己也能写完,写完作业感觉很有成就感。祝大家学有所成!   java学习视频介绍   java常用23...

fengliaoai的博客 1万+

JAVA的23种设计模式详解

JAVA的23种设计模式详解 一.介绍 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 ...

Java学习笔记 965

Java 23种设计模式

Java 设计模式(疯狂Java 联盟版) 1 目录 1. 设计模式..........................................................................................................................................3 1.1 创建型模式.............

Freda的专栏 1777

23种设计模式-12责任链模式

摘要 责任链模式是一种行为设计模式,允许将请求沿着处理链传递,直到有对象处理它为止。该模式适用于多级审批流程、日志处理系统、事件过滤等场景。其核心结构包括抽象处理者(定义处理接口和链式关系)、具体处理者(实现具体处理逻辑)和客户端(构建处理链)。通过示例展示了日志记录器的实现,不同级别日志由不同处理器处理。该模式能有效解耦发送者和接收者,提高系统灵活性和可扩展性。

不开心就吃辣 674

【十一】Java设计模式GOF23之责任链模式

简介 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 javax.servlet.Filter就是用的责任链...

Sid小杰的博客 366

JAVA的23种设计模式之责任链模式

责任链模式: 将能够处理同一请求的对象连接成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求。如果能则处理,如果不能则传递给链上的下一个对象。 场景: 打牌时候,轮流出牌。 接力赛跑 大学中,奖学金审批 公司中,公文审批 公司里面,请假条的审批过程: 如果请假天数小于3天,主任审批 如果请假天...

qq_40990836的博客 323

二十三种设计模式之责任链模式十二

责任链模式 package ink.yql.chainOfResponsibility; public class User { private Integer uid; private String uname; private String upwd; public User setUid(Integer uid) { this.uid = uid; System.out.println(this); return th

weixin_46503529的博客 224

设计模式——责任链模式

说到“各司其职”,我们首先想到的是工厂里的流水线,这是标准的各司其职,而且有助于提高效率,但是在设计模式中的各司其职就要说到责任链模式,从名称上来看已经非常清晰,就是把一件工作分别经过链上的各个节点,让这些节点依次处理这个工作。

lmy86263的博客 1700
上一篇: Python爬虫图片:从入门到精通
下一篇: Java二十三种设计模式-命令模式(18/23)
正在走向自律
正在走向自律 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄10年 4万+粉丝 792原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在走向自律

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值