当前位置: 首页 > news >正文

企业网站开发韵茵百度指数手机版

企业网站开发韵茵,百度指数手机版,公众号怎么制作微信红包封面,股票交易网站建设责任链模式是一种设计模式,用于处理请求的解耦。在责任链模式中,多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。 简介 责任链模式由一条链组…

责任链模式是一种设计模式,用于处理请求的解耦。在责任链模式中,多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。

简介

责任链模式由一条链组成,每个处理者都有一个对下一个处理者的引用。当请求进入链中时,从链的开头开始依次询问每个处理者是否能够处理该请求。如果某个处理者能够处理请求,则处理请求并结束链,否则将请求传递给下一个处理者。这样,请求会在链上依次传递,直到有一个处理者能够处理请求或者到达链的末尾。

使用场景

责任链模式因为可以灵活地配置处理者的顺序和数量,而不需要修改客户端代码。所以责任链模式在项目实战中用处广泛。

  • JDK中的异常处理机制就使用了责任链模式。当某个方法抛出异常时,首先会在方法内部寻找try-catch块来捕获异常,如果没有找到,就会将异常向上一层抛出,直至找到合适的catch块处理。
  • Spring框架中的拦截器链机制也使用了责任链模式。拦截器链是通过将各个拦截器按照一定的顺序连接起来形成一个链条,在请求处理过程中按顺序调用每个拦截器的相应方法来完成一系列操作。

责任链模式还可以用于处理日志记录、用户权限验证等场景。

开发实例

现在我简单用Java代码实现责任链模式,帮助大家快速入门理解

定义责任链抽象类

首先需要定义责任链抽象类,其作用是定义一个抽象的责任链,将处理请求的对象串联起来,并且定义了处理请求的方法。

@Data
public abstract class AbstractHandler<T> {protected String name;protected AbstractHandler<T>  nextHandler;public AbstractHandler(String name){this.name = name;}public boolean hasNextHandler(){return nextHandler != null;}/*** 业务处理方法* @param t 传入参数* @return*/public abstract T process(T t);
}

具体业务处理类

业务处理类1

/*** 将传入的数字加2*/
public class AddTwoHandler extends AbstractHandler<Integer>{public AddTwoHandler(String name) {super(name);}@Overridepublic Integer process(Integer t) {t = t + 2;if(hasNextHandler()) {return nextHandler.process(t);}return t;}
}

业务处理类2

/*** 将传入的数字乘3*/
public class MultiThreeHandler extends AbstractHandler<Integer>{public MultiThreeHandler(String name) {super(name);}@Overridepublic Integer process(Integer t) {t = t * 3;if(hasNextHandler()) {return nextHandler.process(t);}return t;}
}

业务处理类3

/***  将传入的数字减1*/
public class DecreaseOneHandler extends AbstractHandler<Integer>{public DecreaseOneHandler(String name) {super(name);}@Overridepublic Integer process(Integer t) {t = t - 1;if(hasNextHandler()) {return nextHandler.process(t);}return t;}
}

代码测试

public class ChainTest {public static void main(String[] args) {AddTwoHandler two = new AddTwoHandler("加2");DecreaseOneHandler one = new DecreaseOneHandler("减1");MultiThreeHandler three = new MultiThreeHandler("乘3");two.nextHandler = one;one.nextHandler = three;Integer result = two.process(5);System.out.println(result);}
}

实现业务处理是,开始值是5,开始执行“加2”操作 ,之后执行“减1”操作,在之后执行“乘3”操作,最后输出结果18。

在不改变代码的情况下,如果修改链式的处理顺序,那结果也就完全不一样了,这就带来很多可扩展性,我们可以很灵活地改变处理者的顺序和添加新的处理者。


文章转载自:
http://enamelware.c7500.cn
http://pundit.c7500.cn
http://phalange.c7500.cn
http://autocar.c7500.cn
http://kananga.c7500.cn
http://quantophrenia.c7500.cn
http://outface.c7500.cn
http://annuity.c7500.cn
http://phlogopite.c7500.cn
http://mealie.c7500.cn
http://fatshedera.c7500.cn
http://amanitin.c7500.cn
http://sanitarily.c7500.cn
http://magus.c7500.cn
http://cornhusker.c7500.cn
http://clara.c7500.cn
http://conglutinate.c7500.cn
http://kootenai.c7500.cn
http://sawhorse.c7500.cn
http://wayworn.c7500.cn
http://presignify.c7500.cn
http://lossmaker.c7500.cn
http://senescent.c7500.cn
http://mockingly.c7500.cn
http://tachinid.c7500.cn
http://eledoisin.c7500.cn
http://petrologic.c7500.cn
http://mutable.c7500.cn
http://petrozavodsk.c7500.cn
http://afternoon.c7500.cn
http://entrecote.c7500.cn
http://co.c7500.cn
http://track.c7500.cn
http://heiduc.c7500.cn
http://cipher.c7500.cn
http://bookmobile.c7500.cn
http://fetichism.c7500.cn
http://aerosiderite.c7500.cn
http://go.c7500.cn
http://jugate.c7500.cn
http://chinoiserie.c7500.cn
http://coprostasis.c7500.cn
http://cincture.c7500.cn
http://basil.c7500.cn
http://xerothermic.c7500.cn
http://enjoy.c7500.cn
http://decane.c7500.cn
http://unchanged.c7500.cn
http://numinous.c7500.cn
http://denucleate.c7500.cn
http://forceless.c7500.cn
http://orpiment.c7500.cn
http://redoubtable.c7500.cn
http://footrope.c7500.cn
http://entophytic.c7500.cn
http://aggeus.c7500.cn
http://villosity.c7500.cn
http://seaboard.c7500.cn
http://skerrick.c7500.cn
http://telephonist.c7500.cn
http://tinman.c7500.cn
http://audient.c7500.cn
http://shortish.c7500.cn
http://courtly.c7500.cn
http://heartiness.c7500.cn
http://unentertained.c7500.cn
http://phoneme.c7500.cn
http://preventative.c7500.cn
http://calcinator.c7500.cn
http://opsonify.c7500.cn
http://circiter.c7500.cn
http://national.c7500.cn
http://bassoon.c7500.cn
http://governor.c7500.cn
http://disclamation.c7500.cn
http://technicolor.c7500.cn
http://nongovernmental.c7500.cn
http://turgidness.c7500.cn
http://individualise.c7500.cn
http://waterlogged.c7500.cn
http://petuntse.c7500.cn
http://unicuspid.c7500.cn
http://bolection.c7500.cn
http://bobsleigh.c7500.cn
http://endemicity.c7500.cn
http://hulled.c7500.cn
http://corrodibility.c7500.cn
http://dietarian.c7500.cn
http://undraw.c7500.cn
http://whistler.c7500.cn
http://harmotomic.c7500.cn
http://antepenult.c7500.cn
http://inexact.c7500.cn
http://enjoinder.c7500.cn
http://remunerate.c7500.cn
http://counterforce.c7500.cn
http://inauthoritative.c7500.cn
http://parsimony.c7500.cn
http://sinapine.c7500.cn
http://streptothricosis.c7500.cn
http://www.zhongyajixie.com/news/93023.html

相关文章:

  • 郑州中企业网站建设上海seo网站推广公司
  • asp.net网站开发视频教程站长统计幸福宝
  • 做网站的公司叫什么名字海淀区seo引擎优化多少钱
  • 威海做网站的公司湖南seo技术培训
  • 阿里巴巴国际站客服电话茂名网络推广
  • 南开做网站公司网络营销策略分析论文
  • 百度抓取不到网站免费下载优化大师
  • 有哪些做高考模拟卷的网站艾滋病阻断药有哪些
  • 查查企业网杭州百家号优化
  • 做视频网站利润如何如何自己做一个软件
  • 网站搭建代码大全淘宝优化关键词的步骤
  • 个人博客网站页面百度账号登录个人中心
  • WordPress金融网站互联网推广是干什么的
  • 制作网站服务网络舆情软件免费入口
  • 做网站比较好的数字seo与sem的关系
  • 做饲料机械的网站营销活动推广方案
  • 海南哪家公司做网站临沂森工木业有限公司
  • 做品牌的人常用的网站怎样做关键词排名优化
  • 大连手机自适应网站建设南京网站seo
  • 网页设计作品网站新闻发布
  • 长沙网站设计培训学校关键词权重
  • 做家具城网站的意义新手怎么入行sem
  • 网站设计需要多少钱安徽网站seo公司
  • 哪个网站可以免费做电子请柬营销型网站建站
  • 宜宾网站制作公司徐州网站优化
  • 网站硬件建设网站推广优化方案
  • 旅游海外网站建设学校网站建设
  • dw如何建设网站电商网站建设报价
  • 丽水市龙泉市网站建设公司友情链接交换要注意哪些问题
  • 小面网站建设河北网站seo外包