广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java 设计模式之责任链模式及异步责任链详解
  • 803
分享到

Java 设计模式之责任链模式及异步责任链详解

2024-04-02 19:04:59 803人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、定义二、普通责任链模式三、异步责任链模式一、定义 责任链模式(Chain of Responsibility Pattern):避免将一个请求的发送者与接受者耦合在一起,让多

一、定义

责任链模式(Chain of Responsibility Pattern):避免将一个请求的发送者与接受者耦合在一起,让多个对象都有机会处理请求。将接受请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。

在很多源码都有涉及,如mybatis拦截器、Filter…

在这里插入图片描述

责任链模式属于行为型模式。

二、普通责任链模式

在这里插入图片描述

抽象处理类:AbstractProcessor



public abstract class AbstractProcessor {
    // 责任链
    private AbstractProcessor nextProcessor;

    public void setNextProcessor(AbstractProcessor nextProcessor){
        this.nextProcessor = nextProcessor;
    }

    
    public void execute(Object obj) {
        this.processor(obj);
        if (this.nextProcessor != null){
            this.nextProcessor.execute(obj);
        }
    }

    public abstract void processor(Object obj);
}

具体类:ParamsProcessor、CheckProcessor、FinalProcessor


public class ParamsProcessor extends AbstractProcessor{

    @Override
    public void processor(Object obj) {
        System.out.println("paramsProcessor>>>>>>>>>>" + obj.toString());
    }
}

public class CheckProcessor extends AbstractProcessor{

    @Override
    public void processor(Object obj) {
        System.out.println("checkProcessor>>>>>>>>>>" + obj.toString());
    }
}

public class FinalProcessor extends AbstractProcessor{

    @Override
    public void processor(Object obj) {
        System.out.println("finalProcessor>>>>>>>>>>" + obj.toString());
    }
}

测试类:ProcessORMainTest


public class ProcessorMainTest {
    public static void main(String[] args) {
        
        AbstractProcessor paramsProcessor = new ParamsProcessor();
        AbstractProcessor checkProcessor = new CheckProcessor();
        AbstractProcessor finalProcessor = new FinalProcessor();

        paramsProcessor.setNextProcessor(checkProcessor);
        checkProcessor.setNextProcessor(finalProcessor);

        paramsProcessor.execute("Java责任链模式");
    }
}

执行结果

paramsProcessor>>>>>>>>>>Java责任链模式
checkProcessor>>>>>>>>>>Java责任链模式
finalProcessor>>>>>>>>>>Java责任链模式

三、异步责任链模式

异步责任链模式采用责任链模式、生产者消费者模式组合。

在这里插入图片描述

抽象处理类:AbstractAsynProcessor



public abstract class AbstractAsynProcessor extends Thread {
    // 用于存放当前责任链需要处理的对象
    protected BlockingQueue<Object> queue;
    // 链路对象
    private AbstractAsynProcessor nextProcessor;

    
    public void execute(Object obj) throws InterruptedException {
        this.processor(obj);
        if (this.nextProcessor != null) {
            this.nextProcessor.getQueue().put(obj);
        }
    }

    @Override
    public void run() {
        // 执行
        try {
            while (true) {
                // 生产者消费者
                Object obj = this.queue.take();
                execute(obj);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public abstract void processor(Object obj);

    public BlockingQueue<Object> getQueue() {
        return queue;
    }

    public void setNextProcessor(AbstractAsynProcessor nextProcessor) {
        this.nextProcessor = nextProcessor;
    }
}

具体类:AsynParamsProcessor、AsynCheckProcessor、AsynFinalProcessor


public class AsynParamsProcessor extends AbstractAsynProcessor {

    public AsynParamsProcessor() {
        // 初始化队列
        this.queue = new LinkedBlockingQueue<>();
    }

    @Override
    public void processor(Object obj) {
        System.out.println("asynParamsProcessor>>>>>>>>>>" + obj.toString());
    }
}

public class AsynCheckProcessor extends AbstractAsynProcessor {

    public AsynCheckProcessor(){
        this.queue = new LinkedBlockingQueue<>();
    }

    @Override
    public void processor(Object obj) {
        System.out.println("asynCheckProcessor>>>>>>>>>>" + obj.toString());
    }
}

public class AsynFinalProcessor extends AbstractAsynProcessor {

    public AsynFinalProcessor() {
        this.queue = new LinkedBlockingQueue<>();
    }

    @Override
    public void processor(Object obj) {
        System.out.println("asynFinalProcessor>>>>>>>>>>" + obj.toString());
    }
}

测试类:AsynProcessorMainTest


public class AsynProcessorMainTest {
    public static void main(String[] args) throws InterruptedException {
        
        AbstractAsynProcessor asynParamsProcessor = new AsynParamsProcessor();
        asynParamsProcessor.start();
        AbstractAsynProcessor asynCheckProcessor = new AsynCheckProcessor();
        asynCheckProcessor.start();
        AbstractAsynProcessor asynFinalProcessor = new AsynFinalProcessor();
        asynFinalProcessor.start();

        asynParamsProcessor.setNextProcessor(asynCheckProcessor);
        asynCheckProcessor.setNextProcessor(asynFinalProcessor);

        Scanner input = new Scanner(System.in);
        while (true) {
            Thread.sleep(1000);
            System.out.print("请输入:");
            asynParamsProcessor.getQueue().put(input.next());
        }
    }
}

执行结果

请输入:Java异步责任链
asynParamsProcessor>>>>>>>>>>Java异步责任链
asynCheckProcessor>>>>>>>>>>Java异步责任链
asynFinalProcessor>>>>>>>>>>Java异步责任链

到此这篇关于Java 设计模式之责任链模式及异步责任链详解的文章就介绍到这了,更多相关Java 设计模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java 设计模式之责任链模式及异步责任链详解

本文链接: https://www.lsjlt.com/news/156719.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 设计模式之责任链模式及异步责任链详解
    目录一、定义二、普通责任链模式三、异步责任链模式一、定义 责任链模式(Chain of Responsibility Pattern):避免将一个请求的发送者与接受者耦合在一起,让多...
    99+
    2022-11-12
  • Java设计模式之责任链模式详解
    一、前言 各个部门协同合作完成一个任务,每个部门都有各自的职责,一个部门完成后,变回转交给下一个部门,直到所有部门都处理了,这个任务才完成。 将请求与处理解耦。 处理者只需要关注自己...
    99+
    2022-11-12
  • Java设计模式之java责任链模式详解
    目录概述结构总结在本讲,我们来学习一下行为型模式里面的第四个设计模式,即责任链模式。 概述 在学习责任链模式之前,我们先来看一下下面这段描述。 在现实生活中,常常会出现这样的事例:一...
    99+
    2022-11-12
  • Java设计模式之责任链模式
    本文通过图书馆管理系统中,用户名校验、密码校验、需要增加问题,每次都要增加if判断语句,将其改用责任链模式进行链式调用,为了让代码更加的优雅,我们使用之前学过的建造者模式就代码进行改...
    99+
    2022-11-13
  • 详解Java实现设计模式之责任链模式
    目录一、模拟业务需求二、小步小跑的迭代开发三、系统对数据的校验要求四、新建一个抽象类五、子类的实现六、构建责任链和调用七、可维护性八、总结8.1、责任链模式8.2、责任链模式适用的场...
    99+
    2022-11-12
  • Java责任链模式详解
    目录一、概念二、结构三、实现方式四、应用案例五、总结责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它用于将请求的发送者和接收者解耦...
    99+
    2023-05-20
    Java 设计模式 Java 责任链模式
  • Java实现设计模式之责任链模式
    目录1.什么是责任链模式2.如何实现3.代码实现4.总结1.什么是责任链模式 当一个请求可能需要多个对象中的某个进行处理时,将这些对象连成一条链,并沿者这条链传递该请求,知道有一个对...
    99+
    2022-11-13
  • Java设计模式之责任链模式的示例详解
    目录应用场景实际代码案例无模式情况下的代码采用责任链模式优化代码采用建造者+责任链模式优化代码责任链模式优缺点责任链模式是将链中的每一个节点看做是一个对象,每个节点处理的请求均不相同...
    99+
    2022-11-13
    Java 设计模式 责任链模式 Java 责任链模式
  • Java中常用的设计模式之责任链模式详解
    目录优点缺点使用场景一、实现方式1、处理抽象类2、学生处理类3、老师处理类4、校长处理类5、测试二、实现方式1、订单信息类2、订单校验接口3、库存校验器4、价格校验器5、测试总结优点...
    99+
    2022-11-13
  • java设计模式(实战)-责任链模式
    目录一:模式说明二:项目实战三:源代码一:模式说明 模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,...
    99+
    2022-11-12
  • java设计模式责任链模式原理案例详解
    目录引言责任链模式定义类图角色核心示例代码1、对请求处理者的抽象2、对请求处理者的抽象3、责任链的创建责任链实现请假案例案例类图可扩展性纯与不纯的责任链模式纯的责任链模式不纯的责任链...
    99+
    2022-11-12
  • 每天一个设计模式之责任链模式
    作者按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现。诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) 0. 项目地址 责任链模式·代码 《每天一个设...
    99+
    2023-01-31
    模式 责任
  • Java设计模式之职责链模式详解
    目录前言一、职责链模式的定义与特点二、职责链模式的结构三、职责链模式案例前言 本文简单介绍了设计模式的一种——职责链模式  一、职责链模式的定义与特点 定义: 为了避免请求发送者与多...
    99+
    2022-11-12
  • 设计模式之如何掌握责任链
    本篇内容主要讲解“设计模式之如何掌握责任链”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“设计模式之如何掌握责任链”吧!例子假设你也"穿越"到...
    99+
    2022-10-19
  • Java经典设计模式之责任链模式原理与用法详解
    本文实例讲述了Java经典设计模式之责任链模式。分享给大家供大家参考,具体如下:责任链模式:多个对象由其对象对应下家的引用连成一条链,请求在这个链上传递,直到链上的某一个接收对象处理此请求。因为请求的客户端并不知道链上最终是谁来处理这个请求...
    99+
    2023-05-31
    java 设计模式 责任链模式
  • Python设计模式行为型责任链模式
    目录一、责任链模式二、应用场景三、代码示例一、责任链模式 责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象...
    99+
    2022-11-13
  • Java通俗易懂系列设计模式之责任链模式
    目录概述JDK中的责任链模式示例责任链设计模式示例责任链设计模式 - 基类和接口责任链模式 - 链实现责任链设计模式 - 创建链责任链设计模式类图责任链设计模式重点JDK中的责任链模...
    99+
    2022-11-12
  • java设计模式中的责任链模式是什么
    本篇文章为大家展示了java设计模式中的责任链模式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一:模式说明模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。...
    99+
    2023-06-22
  • JavaScript设计模式之职责链模式详解
    目录职责链模式1. 现实中的职责链模式2. 实际开发中的职责链模式3. 用职责链模式重构代码4. 灵活可拆分的职责链节点5. 异步的职责链6. 职责链模式的优缺点7. 用 AOP 实...
    99+
    2022-11-13
    JavaScript 设计模式 JavaScript 职责链模式
  • PHP行为型模式之责任链模式
    目录前言责任链模式的优点责任链模式的实现责任链模式的使用总结前言 责任链模式(Chain of Responsibility Pattern)是什么? 责任链模式是一种行为型模式,它...
    99+
    2023-05-14
    PHP责任链模式 PHP行为型模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作