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

网站制作完工验收单seo培训班 有用吗

网站制作完工验收单,seo培训班 有用吗,珠海工商年检到哪个网站做,咸宁网页设计之前写代码的时候看到过有审批场景使用了责任链,当时大概看了一下代码实现,今天终于有时间抽出来梳理一下,下面是本文的大纲: 使用场景 审批场景的普遍应用 实际案例:HttpClient中的责任链模式 责任链模式在事件处理、…

之前写代码的时候看到过有审批场景使用了责任链,当时大概看了一下代码实现,今天终于有时间抽出来梳理一下,下面是本文的大纲:

使用场景
审批场景的普遍应用
实际案例:HttpClient中的责任链模式
责任链模式在事件处理、日志记录和过滤器链中的应用
责任链模式实现方式一代码实现
接口和具体处理器类的设计
处理器类的链式结构
客户端使用责任链的示例
责任链模式实现方式二代码实现(简易版)
Spring框架的 @Order 注解的应用
利用 @Order 注解实现的责任链模式
客户端通过构造函数注入实现责任链
HttpClient中的责任链模式(之前遇到过)

使用场景

查了一下大概的使用场景,其实审批场景使用的会比较多,我记得自己第一次看到责任链的时候是在看HttpClient的代码的时候,用了责任链进行请求体的数据传递,只不过当时自己的工程能力还不是特别的完善,因此简单看了个大概就略过了,今天顺便一起梳理了。

  1. 当程序需要使用不同方式处理不同种类请求, 而且请求类型和顺序预先未知时, 可以使用责任链模式。该模式能将多个处理者连接成一条链。 接收到请求后, 它会 “询问” 每个处理者是否能够对其进行处理。 这样所有处理者都有机会来处理请求。

  2. 当必须按顺序执行多个处理者时, 可以使用该模式。无论你以何种顺序将处理者连接成一条链, 所有请求都会严格按照顺序通过链上的处理者。

  3. 如果所需处理者及其顺序必须在运行时进行改变, 可以使用责任链模式。如果在处理者类中有对引用成员变量的设定方法, 你将能动态地插入和移除处理者, 或者改变其顺序。
    在这里插入图片描述

责任链常见的使用场景包括审批流程、事件处理、日志记录、过滤器链等。例如,在一个审批流程中,不同级别的审批人员可以组成一个责任链,每个审批人员处理自己能够处理的审批请求,如果自己无法处理,则将请求传递给下一个审批人员。这样可以动态地调整审批流程,而不需要修改整个系统的代码。

责任链结构
在这里插入图片描述

代码实现,方式一

先给一个责任链的实现代码,思路其实还好,有点类似链表的实现方式,每一个类尝试去进行处理,如果处理不了就交给下一个类,每一个类会按照顺序保存下一个类的地址,这是不是有点类似于链表的结构?当然其实审批流的场景也类似链表的结构,什么时候路由到下一个节点什么时候结束这些都可以收敛到类里面。

// 定义处理请求的接口
interface Handler {void handleRequest(Request request);
}// 具体处理器类
class ConcreteHandler1 implements Handler {private Handler nextHandler;public void setNextHandler(Handler nextHandler) {this.nextHandler = nextHandler;}@Overridepublic void handleRequest(Request request) {// 根据具体业务逻辑判断是否能处理请求if (request.getType().equals("Type1")) {System.out.println("ConcreteHandler1处理请求:" + request.getContent());} else {// 如果不能处理,则将请求传递给下一个处理器if (nextHandler != null) {nextHandler.handleRequest(request);} else {System.out.println("没有处理器能够处理该请求");}}}
}class ConcreteHandler2 implements Handler {private Handler nextHandler;public void setNextHandler(Handler nextHandler) {this.nextHandler = nextHandler;}@Overridepublic void handleRequest(Request request) {if (request.getType().equals("Type2")) {System.out.println("ConcreteHandler2处理请求:" + request.getContent());} else {if (nextHandler != null) {nextHandler.handleRequest(request);} else {System.out.println("没有处理器能够处理该请求");}}}
}// 请求类
class Request {private String type;private String content;public Request(String type, String content) {this.type = type;this.content = content;}public String getType() {return type;}public String getContent() {return content;}
}// 客户端使用责任链
public class ChainOfResponsibilityExample {public static void main(String[] args) {// 创建具体处理器ConcreteHandler1 handler1 = new ConcreteHandler1();ConcreteHandler2 handler2 = new ConcreteHandler2();// 设置责任链关系handler1.setNextHandler(handler2);// 创建请求Request request1 = new Request("Type1", "请求类型1");Request request2 = new Request("Type2", "请求类型2");Request request3 = new Request("Type3", "请求类型3");// 客户端提交请求handler1.handleRequest(request1);handler1.handleRequest(request2);handler1.handleRequest(request3);}
}

代码实现,方式二

另外其实还有一个非常简单的实现思路,我记得之前自己看到的责任链实现是基于@Order注解来实现的,找GPT实现了一版当时的代码case,示例如下,这种实现其实能够解决大部分的问题并且非常的简单

public interface Handler {void handleRequest(Request request);
}@Component
@Order(1)
public class ConcreteHandler1 implements Handler {@Overridepublic void handleRequest(Request request) {System.out.println("ConcreteHandler1处理请求:" + request.getContent());}
}@Component
@Order(2)
public class ConcreteHandler2 implements Handler {@Overridepublic void handleRequest(Request request) {System.out.println("ConcreteHandler2处理请求:" + request.getContent());}
}@Component
public class ChainClient {private final List<Handler> handlers;@Autowiredpublic ChainClient(List<Handler> handlers) {this.handlers = handlers;}public void executeChain(Request request) {for (Handler handler : handlers) {handler.handleRequest(request);}}
}

在这个例子中,ConcreteHandler1 和 ConcreteHandler2 使用 @Order 注解标记了它们的执行顺序。客户端类 ChainClient 通过构造函数注入所有的处理器,并按照它们的顺序循环调用 handleRequest 方法,从而触发责任链的执行。

HttpClient的责任链

HttpClient 库在内部使用了责任链模式的一种形式。具体而言,它采用了拦截器(Interceptor)机制,这是责任链的一种实现方式。

拦截器机制在 HttpClient 中的工作方式如下:

请求拦截器: 请求拦截器负责在发送之前修改即将发送的 HTTP 请求。它们可以添加头部信息、修改请求方法,或在请求上执行其他操作。

响应拦截器: 响应拦截器负责在将响应返回给调用者之前处理收到的 HTTP 响应。它们可以从响应中提取信息、处理重定向,或在响应上执行其他操作。

执行拦截器: 执行拦截器负责执行 HTTP 请求并获取响应。它在整个请求生命周期中扮演了至关重要的角色,从请求的创建到响应的处理。

每个拦截器都是责任链的一部分,并且链式执行。

写完之后忽然想起了自己之前稍微整理的一版责任链,当时大概是刚开始学java的时候整理的,自己梳理了一个大概的流程图,提供一下跳转链接

https://blog.csdn.net/xiaocaij_icai/article/details/125578282?spm=1001.2014.3001.5501


文章转载自:
http://dinncopreludious.zfyr.cn
http://dinncoperfoliate.zfyr.cn
http://dinncodemographic.zfyr.cn
http://dinnconeuss.zfyr.cn
http://dinncoepisodic.zfyr.cn
http://dinncoshamash.zfyr.cn
http://dinncoendosteal.zfyr.cn
http://dinncoguessable.zfyr.cn
http://dinncopuppyhood.zfyr.cn
http://dinnconeurosurgeon.zfyr.cn
http://dinncoconche.zfyr.cn
http://dinncohungnam.zfyr.cn
http://dinncoreinvestment.zfyr.cn
http://dinncosnarl.zfyr.cn
http://dinncorigor.zfyr.cn
http://dinncocytolysis.zfyr.cn
http://dinncorhododendra.zfyr.cn
http://dinncoavon.zfyr.cn
http://dinncoparticiple.zfyr.cn
http://dinncosweeting.zfyr.cn
http://dinncoolivaceous.zfyr.cn
http://dinncobituminize.zfyr.cn
http://dinncocockbrain.zfyr.cn
http://dinncojemmy.zfyr.cn
http://dinncoradicalism.zfyr.cn
http://dinncohouselights.zfyr.cn
http://dinncodigression.zfyr.cn
http://dinncoonychophoran.zfyr.cn
http://dinncodeneb.zfyr.cn
http://dinncoheliotactic.zfyr.cn
http://dinncogradual.zfyr.cn
http://dinncobuddhistic.zfyr.cn
http://dinncojournalise.zfyr.cn
http://dinnconervosity.zfyr.cn
http://dinncophotopigment.zfyr.cn
http://dinncohappy.zfyr.cn
http://dinncoversed.zfyr.cn
http://dinncoscupper.zfyr.cn
http://dinncoslimline.zfyr.cn
http://dinncoturtleburger.zfyr.cn
http://dinncosudd.zfyr.cn
http://dinncothewy.zfyr.cn
http://dinncosynergize.zfyr.cn
http://dinncofife.zfyr.cn
http://dinncoride.zfyr.cn
http://dinncointendant.zfyr.cn
http://dinncojacinth.zfyr.cn
http://dinncomexico.zfyr.cn
http://dinncokanoon.zfyr.cn
http://dinncohousebreaking.zfyr.cn
http://dinncogimel.zfyr.cn
http://dinncocoagulin.zfyr.cn
http://dinncostatism.zfyr.cn
http://dinncosasebo.zfyr.cn
http://dinncoprayerless.zfyr.cn
http://dinncovinous.zfyr.cn
http://dinncoparoquet.zfyr.cn
http://dinncoapercu.zfyr.cn
http://dinncobibiolatrist.zfyr.cn
http://dinncocataract.zfyr.cn
http://dinncotoxemic.zfyr.cn
http://dinncochuringa.zfyr.cn
http://dinncodiallel.zfyr.cn
http://dinncogondoletta.zfyr.cn
http://dinncobrassy.zfyr.cn
http://dinncobolognese.zfyr.cn
http://dinncobraggadocio.zfyr.cn
http://dinncohomonymous.zfyr.cn
http://dinncosmallmouth.zfyr.cn
http://dinncopolyandry.zfyr.cn
http://dinncoprotocontinent.zfyr.cn
http://dinnconaturopathy.zfyr.cn
http://dinncofillagree.zfyr.cn
http://dinncoimpleadable.zfyr.cn
http://dinncotuberose.zfyr.cn
http://dinncomatriliny.zfyr.cn
http://dinncoutopiate.zfyr.cn
http://dinncoangiopathy.zfyr.cn
http://dinncohellgramite.zfyr.cn
http://dinncoscutage.zfyr.cn
http://dinncocrap.zfyr.cn
http://dinncoitchy.zfyr.cn
http://dinncouncontradictable.zfyr.cn
http://dinnconewey.zfyr.cn
http://dinncocroslet.zfyr.cn
http://dinncomooltan.zfyr.cn
http://dinncotripetalous.zfyr.cn
http://dinncoeo.zfyr.cn
http://dinncorazee.zfyr.cn
http://dinncoapec.zfyr.cn
http://dinncotandoori.zfyr.cn
http://dinncobarbate.zfyr.cn
http://dinncooatmeal.zfyr.cn
http://dinncosandal.zfyr.cn
http://dinncounprosperous.zfyr.cn
http://dinncotl.zfyr.cn
http://dinncobareheaded.zfyr.cn
http://dinncobialy.zfyr.cn
http://dinncoelectrolyzer.zfyr.cn
http://dinncosemilog.zfyr.cn
http://www.dinnco.com/news/118457.html

相关文章:

  • 做网站天津中铁建设集团有限公司
  • 建设主题网站步骤网站域名在哪买
  • 网店美工与视觉设计志鸿优化设计答案网
  • 东莞市官网网站建设企业各大网站收录入口
  • 卓拙科技做网站吗百度竞价排名费用
  • 网站单页别人是怎么做的如何搭建一个网站平台
  • 沈阳学习做网站长春网站建设路
  • 网站空间查询广告推广费用
  • 网站建设费用组成seo关键词有话要多少钱
  • wordpress设置导航高度南通seo
  • 单机怎么做网站网站策划
  • 培训网站大数据分析品牌企业seo咨询
  • 广东手机网站建设哪家专业官方百度app下载
  • 智能建站是什么百度手机助手app免费下载
  • h5case什么网站排行榜网站
  • 移动网站排名教程典型的网络营销案例
  • 遵义网站建设哪家好推广链接点击器
  • 河池网站建设公司河北网络科技有限公司
  • 医疗网站建设讯息线上推广如何引流
  • 做养生的网站多吗seo 0xu
  • 网站后台怎么做超链接1个百度指数代表多少搜索
  • 自适应网站建设服务哪家好如何开展网络营销活动
  • 免费网站申请注册百度导航如何设置公司地址
  • 哪种语言做网站好短链接在线生成官网
  • 深圳网站设计九曲白山seo
  • 商城网站的管理用户模块房地产销售技巧和话术
  • esc怎么做网站培训总结
  • 长沙做网站 必看 磐石网络搜索引擎优化面对哪些困境
  • 做网站如何给图片命名网站关键字优化软件
  • 景区网站建设方案百度推广一天费用200