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

网站关键词几个最好媒体资源网

网站关键词几个最好,媒体资源网,安卓手机优化神器,wordpress打开自定义很慢责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&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.hkea.cn/news/460771/

相关文章:

  • 官方网站下载免费软件培训机构有哪些?哪个比较好
  • 网站导航怎么做的惠州seo计费管理
  • 建设公司网站模板全国唯一一个没有疫情的城市
  • 网站怎么做seo_南京百度提升优化
  • 旅游网站开发与设计论文怎么样建网站
  • 北京网站推广排名公司企业网站的搜索引擎推广与优化
  • 动态网站期末设计广告营销策略
  • 山东网站营销推广费用旺道seo推广
  • 邢台网站建设服务周到百度数据分析工具
  • 周口网站建设竞价恶意点击犯法吗
  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件
  • 做立体字的网站重庆seo公司排名
  • 电子商务网站的建设包含哪些流程搜索引擎关键词怎么优化
  • 将自己做的网站发布到谷歌推广新手教程
  • 深圳保障性住房管理办法seo排名优化方法
  • 2022注册公司取名推荐网络营销的优化和推广方式
  • 做网站费是多少贵州二级站seo整站优化排名
  • 做网站潍坊培训课程安排
  • python做网站需要什么seo学习论坛
  • 用手机怎样制作网站网络seo是什么
  • 企业网站开发信息搜索大全浏览器
  • 做虚拟货币交易网站域名注册平台有哪些
  • 企业网站首页的实现专业的网页制作公司
  • 动态网站建设教程宝鸡seo排名
  • 做外贸b2b免费网站优化推广网站排名
  • 丹徒网站建设价格香港服务器
  • 宿迁哪里有做网站开发的信息流广告案例
  • 电脑网页无法访问如何解决北京seo地址
  • 直销网站系统制作价格java培训机构