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

网站建设公司网站源码各网站收录

网站建设公司网站源码,各网站收录,中铁建设集团有限公司中南分公司,属于网页制作工具的是责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…

责任链的介绍

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

在责任链模式当中,客户端只用执行一次流程开始的请求便不再需要参与到流程执行当中,责任链上的流程便能够自己一直往下执行,客户端同样也并不关心执行流程细节,从而实现与流程之间的解耦。

责任链的结构

责任链模式需要有以下几个角色:

  • 抽象处理器(Handler):处理器抽象接口,定义了处理请求的方法和执行下一步处理的处理器
  • 具体处理器(ConcreteHandler):执行请求的具体实现,先根据请求执行处理逻辑,完成之后将请求交给下一个处理器执行
  • 调用者:调用者通过创建处理器并将请求交给处理器进行处理

Java实现

Context是全部参数,用于在各个处理器中流转。

@Data
@Builder
public class Context {private String name;private String type;
}

Handler抽象的处理器,定义了执行和判断是否需要执行的接口。

public interface Handler {void execute(Context context, HandlerChain chain);default boolean skip(Context context) {return false;}
}

NameHandler用来处理参数中的name属性

@AutoService(Handler.class)
public class NameHandler implements Handler {@Overridepublic void execute(Context context, HandlerChain chain) {System.out.println("name: " + context.getName());chain.execute(context);}@Overridepublic boolean skip(Context context) {if ("name1".equals(context.getName())) {return true;}return false;}
}

TypeHandler用来处理参数中的type属性

@AutoService(Handler.class)
public class TypeHandler implements Handler {@Overridepublic void execute(Context context, HandlerChain chain) {System.out.println("type: " + context.getType());chain.execute(context);}
}

HandlerChain用于封装处理器链条,提供执行入口。

public class HandlerChain {private int index;private final List<Handler> handlers;HandlerChain(List<Handler> handlers) {this.handlers = handlers;}public void execute(Context context) {if (this.index < handlers.size()) {Handler handler = handlers.get(this.index++);boolean skip = handler.skip(context);if (skip) {this.execute(context);}else {handler.execute(context, this);}}}}

测试效果

public class ChainTest {public static void main(String[] args) {ServiceLoader<Handler> serviceLoader = ServiceLoader.load(Handler.class);List<Handler> handlers = StreamSupport.stream(serviceLoader.spliterator(), false).collect(Collectors.toList());HandlerChain handlerChain = new HandlerChain(handlers);Context context = Context.builder().name("name").type("type").build();handlerChain.execute(context);HandlerChain handlerChain1 = new HandlerChain(handlers);Context context1 = Context.builder().name("name1").type("type1").build();handlerChain1.execute(context1);}
}

控制台输出:

name: name
type: type
type: type1

name属性是name1的context,是不需要NameHandler处理的。

在这里插入图片描述

http://www.bjxfkj.com.cn/article/102393.html

相关文章:

  • 登陆不了建设银行网站企业网站建设多少钱
  • 网站建设业务方法官方网站百度一下
  • 做网站的原型文件下载怎么做蛋糕
  • 中职电子商务专业就业方向seo关键词排名优化官网
  • 淘宝上买的建设网站能退款吗seo建站的步骤
  • 企业网站重要性潍坊网站建设优化
  • 网站的商桥怎么做网站服务公司
  • 建一个网站需要什么流程河南疫情最新消息
  • 无锡网站 制作百度搜索引擎api
  • 周口建设委员会网站信息平台百度指数专业版价格
  • 12306网站为什么做那么差微信群推广网站
  • 抖音怎么开通小程序推广兰州seo技术优化排名公司
  • 商业网站建设设计百度手机助手下载安装最新版
  • 怎样做化妆品网站宁波网站推广
  • 网后台的网站怎么做百度指数批量获取
  • 做自己的批发网站需要什么营业执照白杨seo教程
  • 怎么给网站绑定域名阿里指数官网
  • 个人网站 摄影展示网络服务商主要包括哪些
  • 云南专业做网站多少钱网站友链
  • 营销网站建设的价格友情链接交换系统
  • 专业网站开发设计网络营销推广方案3篇
  • 开发高端网站开发搜索引擎优化方法
  • 嘉兴网站建设兼职微信scrm系统
  • 怎么上传网站到ftp网络运营是做什么的
  • 哪些网站布局设计做的比较好的seo技术培训教程
  • 给别人做的网站涉及到诈骗百度推广优化中心
  • wordpress笑话模板企业网站优化服务
  • 电影《设计》国外网站谷歌seo推广
  • 企业网站做速优化排名万象搜索引擎有哪些技巧
  • 学习资料黄页网站免费搜索引擎优化工作