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

企业网站开发韵茵百度指数app

企业网站开发韵茵,百度指数app,模板式网站,电子商务网站运营与...责任链模式是一种设计模式,用于处理请求的解耦。在责任链模式中,多个对象都有机会处理请求,从而避免了请求发送者和接收者之间的直接依赖关系。每个处理者都可以决定是否处理请求以及将请求传递给下一个处理者。 简介 责任链模式由一条链组…

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

简介

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

使用场景

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

  • 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://www.dinnco.com/news/77189.html

相关文章:

  • 酒仙网技术开发与网站建设方面seo网站建设优化
  • 【邯郸网络推广公司|邯郸网络营销公司】seo诊断分析工具
  • 网站建设说课ppt大冶seo网站优化排名推荐
  • 兄弟们有没有没封的网站网站建站设计
  • 做国外lead应该做什么网站推广app的单子都在哪里接的
  • 微信网站建设热线如何用手机免费创建网站
  • 外贸网站开发semikron
  • 有教做鱼骨图的网站吗怎么建立网站
  • 做任务赚钱网站有哪些南京seo公司教程
  • 上海一家做服饰包鞋穿上用品的网站百度网站客服
  • wordpress网站怎么建设网络推广员一个月多少钱
  • 淘宝网页版怎么退出登录seo广告优化多少钱
  • 烟台做网站哪里好营销咨询服务
  • 做淘宝那样的网站麻烦吗信息流广告代理商排名
  • 外国网站界面福建省人民政府门户网站
  • 网站ip地址查询域名今日热榜官网
  • 中企动力做网站真贵网络营销方法有哪些
  • 搜狐网站网络营销怎么做百度应用app
  • 宠物网站建设需求分析安徽网络关键词优化
  • 长春网站建设小程序西安sem竞价托管
  • 怎么做网站加盟百度seo多久能优化关键词
  • 佛山大型的网站制作今日新闻最新头条
  • 什么是品牌网站建设手机关键词点击排名软件
  • 怎么创建网站详细流程2021网络营销成功案例
  • 做网站实现图片自动压缩网页制作步骤
  • 网站关键字如何设置百度一下首页网页
  • 绵阳网站建设 小程序福州百度快速优化排名
  • 大学网站建设管理办法信息化百度一下首页
  • 重庆做网站 哪个好些嘛亚洲长尾关键词挖掘
  • 商标注册查询系统官网厦门关键词优化平台