Java责任链模式实战及日常开发应用场景
熟悉spring mvc的同学都知道,它在处理请求的时候每个请求都会经过拦截器进行处理,拦截器接口内部定义了处理请求前和请求后的方法,只要实现了该拦截器接口就可以对请求进行相应的处理,这使用的正是责任链模式。我在新入职一家公司后,敏捷开发进行版本迭代,在接到新需求,并确定需求后,基于前同事的代码进行二次开发,发现在一个类中堆了一坨代码,大概一千多行,而在该类中有一个核心方法,它会调用整个类中其他所有的方法。伪代码如下
public void handle() {//调用外部接口获取数据写入param对象writexxx(param);writexxx(param);writexxx(param);...writexxx(param);writexxx(param);writexxx(param);//将param对象入库xxxMapper(param)}
而这种代码调用方式我认为很适合使用责任链模式,所以看到这坨代码时,非常想重构,但也就是想想,毕竟改别人的代码,代价是很大的。这次版本迭代就是新增外部接口的调用,写入param对象并持久化,所以我准备换种方式实现,让业务可以横向拓展,而不是继续在这个类中进行疯狂输出。
类似拦截器,新增接口定义,
public interface TestHandler {void handler(Param param);
}
具体实现类在handler方法中调用外部接口,对param对象进行操作。@Order注解可以对xxxHandler.handler()执行顺序进行控制,
@Component
@Order(2)
public class AHandler implements TestHandler{@Overridepublic void handler(Param param) {User user = param.getUser();user.setName("james");}
}
@Component
@Order(1)
public class BHandler implements TestHandler{@Overridepublic void handler(Param param) {User user = param.getUser();user.setEmail("243243");}
}
改造handl()方法,在该类定义TestHandler集合属性并注入具体实现,通过for循环调用handler方法
@Resource
List<TestHandler> handlers;public void handle() {//调用外部接口获取数据写入param对象writexxx(param);writexxx(param);writexxx(param);...writexxx(param);for (TestHandler handler : handlers) {handler.handler(param);}//将param对象入库xxxMapper(param)}
这样就实现了对业务进行横向拓展,而不会是代码在一个类中越卷越多,最后烂到底。
Java责任链模式实战及日常开发应用场景相关推荐
- Java 责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...
- java责任链模式审批请假_Java使用责任链模式处理学生请假问题详解
本文实例讲述了Java使用责任链模式处理学生请假问题.分享给大家供大家参考,具体如下: 一. 模式定义 在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来,形成一条链.客户端应用请求在这个链 ...
- java责任链模式审批请假_14-学生生病请假:责任链模式
14.1 请假流程 学生生病了,需要请假,写了请假条交给班长处理.假如此时有三种情况: 1)是小病需要请假时间短,班长能够处理,就批准请假,否则交给老师处理: 2)老师实际查看学生的情况,如果可以处理 ...
- 【Java 责任链模式实例】
责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行发送,直到有一个处理者处理它为止.在责任链模式中,每个处理者都是相互独立的对象,并且每个处理者都负责对请求进行处理.如果当前处理者不能处理请 ...
- 王者荣耀java,责任链模式在王者荣耀中的应用
来源:https://blog.csdn.net/IT_charge 一.简述 在王者荣耀商城中,玩家可以参与夺宝抽奖.夺宝抽奖分两种,一种是积分抽奖,另一种是钻石抽奖:在平常,两种夺宝抽奖方式均可以 ...
- java责任链模式审批请假_Java设计模式-责任链模式
Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...
- java责任链模式_java中责任链模式详解和使用方法
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...
- java责任链模式做优惠_Java设计模式菜鸟系列(十八)责任链模式建模与实现
责任链模式(ChainOfResponsibility): 有多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出者并不清楚最终哪个对象会处理该 ...
- java 责任链模式 链表_责任链模式的实现及源码中应用
01 - 责任链模式的实现 假设一个出差任务的流程需要审批出差行程和出差报销金额.那么,对应两个部门的审核.我们先定义一个出差任务Task类: 然后,我们定义一个抽象的处理类Handler,其中具体的 ...
最新文章
- Codeforces 494D Upgrading Array
- CentOS下yum安装nginx服务
- 分布式架构springmvc+springboot+springcloud+redis
- Spring Boot 使用 Graylog 收集日志
- 自学python有用吗-普通人学Python有用吗?学完能做什么?
- Python 技术篇-用smtplib和email库实现邮件发送并展示本地图片实例演示
- 3D深度估计,让视频特效更梦幻!
- springboot中使用@Value读取配置文件
- java excel 晒新年操作_java操作Excel的poi 创建一个sheet页
- php composer 框架,用 Composer 组建了个 PHP 框架
- 达摩院最新突破:新型量子芯片操控精度99.72%创新高
- 树莓派 armv几_如何在具有armv6处理器的树莓派板上安装和使用Java 11和JavaFX 11
- Jensen不等式及其扩展
- 如何用文件对比工具进行文件内容比较
- 请为自己计算机进行磁盘优化,如何对Win10系统的磁盘进行清理并优化
- 【数学分析入门】R语言独立性检验方法
- java抢红包_Java实现抢红包功能
- [清风数学建模]层次分析法(AHP)笔记及代码实现
- 向老销售取经,学来的一点软件销售技巧
- MobileNet V1官方预训练模型的使用
热门文章
- 安装虚拟机提示“无法安装服务VMAuthdService”,请确保您有足够的权限安装系统服务
- [CodeX] 输入文本即可生成代码
- Springboot使用-静态类读取配置文件
- 隐私无忧,多御浏览器者通过这些功能保护用户隐私
- 由神经网络机器学习的算法谈谈人的成瘾以及疲惫机制
- JS中的BOM 详解
- python的lxml库简介_Python lxml库简介
- python通过urllib+request抓取新闻联播
- 云技术在android平台上的应用程序,安卓系统上的ERP云应用
- ULCL功能--5GC