当前位置: 首页 > 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.yayakq.cn/news/432319/

相关文章:

  • 网站系统建设思想如何写公众号商城怎么开
  • 做网站源码需要多少钱国外的app设计网站
  • 做网络推广网站有哪些湖南株洲静默
  • 网站建设先进材料wordpress主题调度
  • 惠州网站建设找哪个公司房地产家居网络平台
  • 自学网站免费上海高端网站建设
  • 个人网站名字取名怎么做网站建设与管理试题一
  • 购物网站建设比较好的wordpress 创业
  • 电子商务官方网站东莞网站建设哪里好
  • 网站源码带采集怎样开通微信公众号平台
  • 公司做个网站好还是做公众号好如何自己设计装修效果图
  • asp网站仿制网站一般用什么软件做的
  • 移动网站开发语言中国网重庆
  • 免费行情网站软件ipad 设计网站
  • 网站网络设计是怎么做的网页设计师学历要求
  • 建设网站企业网上银行登录入口美团网站开发形式
  • 做网站江西外贸建站行业好做吗
  • 做网站含营销导航网站 win8风格
  • 网站制作推广需要多少钱手工艺品网站建设方案
  • 网站公司企业宗旨网站建设实训个人总结1000字
  • 替朋友做网站厦门网站设计培训公司
  • 贵州省住房和建设厅网网站wordpress软件分享
  • 怎么查那些人输入做网站广州seo团队
  • 金坛做网站365网站
  • 如何用百度上传图片做网站外链frontpage做网站
  • 东莞网站建设员微网站开发案例
  • 企业网站建设如何去规划网页版qq安全中心登录入口
  • django做企业级网站学校校园网站建设服务
  • 无锡网站制作高端网站优化心得
  • 制作介绍的网站模板做瞹网站