背景

当我们需要对一个对象进行多次操作时,每个操作支持个性化定制,后续还可能增加更多的操作时就可以使用责任链模式,本篇将使用SpringBoot实现简易责任链

例子

如下代码范例是校验一名粉丝是不是"小黑子"

  1. 定义接收前端参数对象
@Data
public class ChainParam {private String name;}
  1. 定义操作对象接口
public interface ChainFilter {boolean doFilter(ChainParam param);}
  1. 实现操作对象接口
@Component
//此注解用于确定添加到对应集合中的先后顺序
@Order(0)
public class FirstFilter implements ChainFilter {@Overridepublic boolean doFilter(ChainParam param) {if ("ikun".equals(param.getName())) {System.out.println("真爱粉!");return true;}return false;}
}@Component
@Order(1)
public class SecondFilter implements ChainFilter {@Overridepublic boolean doFilter(ChainParam param) {if ("基泥太美, 你干嘛啊".contains(param.getName())) {System.out.println("小黑子!");return true;}return false;}
}@Component
@Order(2)
public class FinallyFilter implements ChainFilter {@Overridepublic boolean doFilter(ChainParam param) {System.out.println("路人!");return true;}
}
  1. 定义责任链处理器
@Component
public class MyChainFilter {@Autowired//SpringBoot会自动将对应所有ChainFilter实例封装进该list集合中去private List<ChainFilter> filterList;public void handle(ChainParam param) {if (CollectionUtils.isEmpty(filterList)) {return;}for (ChainFilter chainFilter : filterList) {boolean flag = chainFilter.doFilter(param);if (flag) {break;}}}
}

验证

//测试1
{"name":"你干嘛"
}
//输出
小黑子!//测试2
{"name":"ikun"
}
//输出
真爱粉!//测试3
{"name":"篮球"
}
//输出
路人!

使用SpringBoot实现责任链模式相关推荐

  1. java责任链模式审批请假_Java设计模式-责任链模式

    Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...

  2. SpringCloud SpringBoot uniapp vue b2b2c 微服务 多商家入驻直播带货商城 分销商城 秒杀 高并发电商之责任链模式

    责任链模式 推荐分布式微服务电商源码 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收 ...

  3. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  4. 折腾Java设计模式之责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

  5. 春节期间,我用责任链模式重构了业务代码

    前言 文章开篇,抛出一个老生常谈的问题,学习设计模式有什么作用? 设计模式主要是为了应对代码的复杂性,让其满足开闭原则,提高代码的扩展性 另外,学习的设计模式 一定要在业务代码中落实,只有理论没有真正 ...

  6. 权限认证实现(责任链模式)

    一.前言 本文是笔者实现权限认证流程的思路,由于本人技术水平有限,在文章中难免出现错误,如有发现,感谢各位指正. 笔者在刚开始工作时,接到的一个任务就是实现权限认证流程,当时采用的是Jfinal框架. ...

  7. Java 设计模式-责任链模式

    1.定义 责任链模式是一种行为设计模式,允许你将请求沿着处理链发送,然后处理者都可对其进行处理,完成后可以再将其传递给下一个处理者. 可以控制请求的处理的顺序 单一职责原则,可以对发起操作和执行操作的 ...

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

    一.责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的 ...

  9. 责任链模式在王者荣耀中的应用,妙啊!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

最新文章

  1. Python技术学习之Django框架设计思想
  2. Kali Linux安装OpenVAS
  3. BUUCTF-WEB:[SUCTF 2019]EasySQL 1
  4. 零基础学习java------day7------面向对象
  5. IDEA Translation插件安装及设置鼠标悬浮提示的自动翻译
  6. 掌握基本的git命令,将本地文件上传到gitee
  7. python 自定义函数语句_python 自定义函数
  8. Chrome中使用showModalDialog无法接收返回值,解决方案
  9. C# await和async
  10. python中post()方法在获取获取必应网站翻译结果中的应用
  11. 数据结构c语言版题库填空题,数据结构(C语言版)选择、填空题
  12. 中国科学院大学2017年高等代数考研试题
  13. 霍尔编码器-STM32读取
  14. 是指直接进行国际联网的计算机信息网络,网络安全合规指引题库:计算机信息网络直接进行国际联网,可以使用邮电部国家公用电信网提供的国际出入口信道。单位和个人也可以自行建立信道进行国际联网。()...
  15. 到底什么是对象,什么是对象的引用?对象和对象的引用有那些区别?
  16. 计算机网络 IP地址基础知识
  17. 语音合成TTS(Text-To-Speech,从文本到语音)
  18. 真香定律:无需下载录屏软件,直接在线录屏
  19. twitter api的使用
  20. 软件测试人员正确分析定位BUG小技巧

热门文章

  1. 测试用例设计方法有哪些?举例说明
  2. android的SP存储和SD卡存储
  3. 关闭计算机防火墙命令,电脑防火墙怎么关?有哪些关闭方法
  4. oracle table()函数用法
  5. 企业运维实战之k8s(HPA、Helm)初学者必看,点赞关注后期不迷路
  6. 操作迅捷CAD编辑器进行CAD转换PDF
  7. 一个悄然崛起的国产软件,低调又强大!
  8. 朗读评价语言集锦_课堂评价语言“集锦”
  9. python自动抢票的原理_Python突破12306最后一道防线,实现自动抢票(附源码)
  10. 如何能成为一名真正电子工程师【转】