01

责任链模式的实现

假设一个出差任务的流程需要审批出差行程和出差报销金额。那么,对应两个部门的审核。我们先定义一个出差任务Task类:

然后,我们定义一个抽象的处理类Handler,其中具体的处理方法Handle交给子类去实现。

然后,出差行程的审核者继承了Handler,并实现了其中的Handle方法。其中,处理成功,需要判断是否有下一个Handler,如果有则传递下去。

然后继续实现出差金额的审核者MoneyHandler,其处理思路和上面类似。

测试类如下,首先创建出差任务。然后在应用层设置处理流程(即有哪几个Handler),然后从第一个流程开始启动。

测试结果如下,从测试结果可以看出,正常处理。如果某一个审核不通过,则会终止当前的Handler向下传播。

02

Netty中的源码

在Netty中的Pipeline上是基于链表实现的责任链。在Pipeline上添加Handler,最终Handler会在责任链上传递。

具体可以参考Netty中的源码。

此外,在Servlet中的Filter也是基于责任链模式实现的,与上面的案例实现方式一致。

java 责任链模式 链表_责任链模式的实现及源码中应用相关推荐

  1. java球球大作战_球球大作战(小游戏源码)

    [实例简介] 控制自己的小球球去吃比自己小的球球 [实例截图] [核心代码] package chiqiuqiu.cn; import java.awt.Color; import java.awt. ...

  2. r相机采集的图片转化为halcon识别的图像源码_直播系统开发:关于直播源码中美颜SDK的作用...

    美颜.美型.滤镜等功能已经是拍照类APP的标配,直播系统开发中也更是离不开这些功能.拍照拍视频或者开启直播时,总希望能够加一些萌萌的兔耳朵,或者一些更复杂的3D人脸面具等特效.但是由于这类技术涉及人脸 ...

  3. 【深入设计模式】责任链模式—责任链模式及责任链模式在源码中的应用

    文章目录 1. 责任链模式 1.1 责任链模式简介 1.2 责任链模式结构 1.3 责任链模式示例 2. 责任链模式在源码中的应用 2.1 Servlet 中的责任链模式 2.2 Spring 中的责 ...

  4. 区块链开发指南_区块链钱包开发

    开发钱包之前,我们需要有以下的预备知识. 第一,什么是钱包,以及相关的分类. 本文站在开发者的角度,给读者讲解下怎么样和钱包进行交互,以及如何开发一个钱包. 我们怎么样理解钱包呢?简单讲它是连接区块链 ...

  5. 区块链JAVA数字交易所官方商业版开发级全套三端纯源码

    介绍: 区块链JAVA数字交易所官方商业版开发级全套三端纯源码 网盘下载地址: http://kekewangLuo.net/fsQqJmSy7st0 图片:

  6. 记一次linux下,源码中包含外链时,SVN打tag

    问题描述:源码中包含外链打tag,使用SVN cp 源码文件  SVN上的tag目录 :打tag时会将源码的外链的属性也保存下来,导致打完tag后外链目录仍然在一直更新,导致tag目录无效 解决方法 ...

  7. JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的。

    JDK源码解析 迭代器模式在JAVA的很多集合类中被广泛应用,接下来看看JAVA源码中是如何使用迭代器模式的. 看完这段代码是不是很熟悉,与我们上面代码基本类似.单列集合都使用到了迭代器,我们以Arr ...

  8. 【设计模式系列20】解释器模式原理及其在JDK和Spring源码中的体现

    解释器模式原理及其在JDK源码中的体现 设计模式系列总览 前言 什么是解释器模式 终结符表达式和非终结符表达式 解释器模式示例 解释器模式角色 解释器模式在JDK和Spring源码中应用 解释器模式应 ...

  9. 全局程序集缓存gac中安装程序集_我就不信2W字把源码拆的这么碎,你还不明白mybatis缓存...

    前言 不知道大家看到这张图感觉怎么样,不是难,一共也没有几个组件,但是真的让我想当头疼,因为在面试的时候,就这张图,对,你没看错,就这几个组件,那是让我相当难受啊 MyBatis中SQL执行的整体过程 ...

最新文章

  1. Android中五种常用的menu
  2. cuda9.1 tensorflow1.6
  3. 【运营】产品经理必须了解的运营方法,让你的产品有产有销
  4. 递归和迭代_迭代与递归
  5. 机器学习-sk-learn-Facebook数据集预测签到位置
  6. GitHub上最受开发人员欢迎的5大Java项目
  7. php脚本查杀,无敌强大的Shell脚本查杀各种PHP方便之门和Webshell
  8. html框架实验总结,网页设计实训心得
  9. RK瑞芯微WIFI模组2020最新支持列表,放心使用!
  10. (52)Verilog HDL下升沿检测
  11. InstallAnywhere制作出来的安装包在64位机上无法卸载
  12. 第01期:salesforce开发环境的搭建
  13. 《游戏设计艺术(第二版)》第十二章个人学习
  14. 3┃音视频直播系统之浏览器中通过 WebRTC 直播视频实时录制回放下载
  15. 电脑任务栏应用图标变成白色怎么恢复
  16. 【转】Ogre 1.7版本重大改进by 诡辩
  17. 我的世界java播放背景音乐_我的世界BOSS音乐mod
  18. 2014中国信用卡报告
  19. 「CSS畅想」何以解忧,美食足矣,用技术给好友开发了一个零食盲盒小游戏
  20. 如何实现音频变速不变调、变调不变速、变速又变调?

热门文章

  1. java中异常注意的细节1
  2. jvm内存模型和java内存模型_JVM运行时内存模型综述
  3. php十六进制字符串转成字节数组_10 天 5 千 Star!21 岁本科生给程序员开发的十六进制编辑器...
  4. java堆内存 数据结构_JAVA内存区域
  5. 贝壳如何docker安装openwrt_OpenWrt 中 使用 Docker 安装可道云出错。
  6. Python二级笔记(2)
  7. seata 如何开启tcc事物_微服务分布式事务4种解决方案实战
  8. 太原冶金技师学院计算机系,山西冶金技师学院2021年招生简章
  9. vscode Go 1.11.4 编译错误 need Delve built by Go 1.11 or later
  10. 零基础入门深度学习(5) - 循环神经网络