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

网站备案后 换服务器中国新冠疫苗接种率

网站备案后 换服务器,中国新冠疫苗接种率,推广策略分析,西班牙语网站设计哪家好责任链模式通常一般用在方法的拦截、监控、统计方面,比较典型的就是Spring的AOP拦截。 但写一些小的基础能力框架的时候,用AOP比较中,所以一般都是自己针对特定的功能写一些定制的责任链工具类,不太喜欢总是做一些定制化的东西&am…

责任链模式通常一般用在方法的拦截、监控、统计方面,比较典型的就是Spring的AOP拦截。
但写一些小的基础能力框架的时候,用AOP比较中,所以一般都是自己针对特定的功能写一些定制的责任链工具类,不太喜欢总是做一些定制化的东西,想着能不能简单定义一套标准,基于标准能够快速实现责任链的能力?

1、定义简单的链路控制类

该类是一套标准的控制类,主要负责流转链路执行走向
其中Supplier中是目标的执行方法
T 代表接口的标记也就是第二点的实现

public class SampleBaseFilterChain<T extends SimpleChainFilterService> {/*** 拦截器*/private final List<T> functionFilters;/*** 具体的执行方法*/private final Supplier<Object> supplier;private int index = 0;public SampleBaseFilterChain(List<T> functionFilters, Supplier<Object> supplier) {this.functionFilters = functionFilters;this.supplier = supplier;}// 该方法是为了方便在Spring的IOC容器中直接根据类对象,从容器中获取相应的集合.public SampleBaseFilterChain(Class<T> clazz, Supplier<Object> supplier) {this.functionFilters = SpringUtils.getBeansOfType(clazz).values().stream().toList();this.supplier = supplier;}public Object doFilter(Object... objects) {if (CollectionUtils.isEmpty(functionFilters) || functionFilters.size() == index) {return supplier.get();}return functionFilters.get(index++).doFilter(this, objects);}}

2、定义接口标准

这部分接口太过于抽象,比如你不知道参数具体是啥,可能需要针对下层实现才知道。

public interface SimpleChainFilterService {Object doFilter(SampleBaseFilterChain<? extends SimpleChainFilterService> chain, Object... obj);
}

基于以上两点基本上确定了控制器和顶层接口的定义,该怎么玩呢?

@Testpublic void doFilter() {List<SimpleChainFilterService> chainList = new ArrayList<>();chainList.add((chain, obj) -> {System.out.println("A-start-" + obj[0]);return chain.doFilter(obj);});chainList.add((chain, obj) -> {final Object o = chain.doFilter(obj);System.out.println("B-end-" + obj[0]);return o;});chainList.add((chain, obj) -> {System.out.println("C-start-" + obj[1]);final Object o = chain.doFilter(obj);System.out.println("C-end-" + obj[1]);return o;});SampleBaseFilterChain<SimpleChainFilterService> sampleFilterChain = new SampleBaseFilterChain<>(chainList, () -> "ok");final Object o = sampleFilterChain.doFilter("哈哈", 1);System.out.println("得到结果:" + o);}

打印结果:

A-start-哈哈
C-start-1
C-end-1
B-end-哈哈
得到结果:ok

3、接口标准优化

对于第二点的接口,太过于抽象,无法知道接口的具体参数,这对后续使用者实现来说会很麻烦。
这个时候,你可以针对特定的业务标准在下沉一层。
比如需要针对登录进行拦截

public interface  LoginChain extends SimpleChainFilterService {@Overridedefault Object doFilter(SampleBaseFilterChain<? extends SimpleChainFilterService> chain, Object... obj) {return doFilter(chain, (String) obj[0], (int) obj[1]);}public String doFilter(SampleBaseFilterChain<? extends SimpleChainFilterService> chain, String username, int id);
}

使用方式:

// 前置拦截
List<LoginChain1> chainList1 = new ArrayList<>();
chainList1.add((chain, username, id) -> {System.out.println("login-start-" + username + "\t" + id);return chain.doFilter(username, id).toString();
});// 后置拦截
chainList1.add((chain, username, id) -> {final String result = chain.doFilter(username, id).toString();System.out.println("login-end-" + username + "\t" + id);return result;
});SampleBaseFilterChain<LoginChain1> sampleFilterChain = new SampleBaseFilterChain<>(chainList1, () -> {System.out.println("ok");return "ok";
});final Object o = sampleFilterChain.doFilter("哈哈", 1);
System.out.println("得到结果:" + o);
login-start-哈哈	1
ok
login-end-哈哈	1
得到结果:ok

基于以上的定义,我们只需要编写SimpleChainFilterService实现即可,通过使用SampleBaseFilterChain 来触发控制流程的流转,就行了,不用每套责任链都要重写接口和控制链。

以上为个人实践思考,如果你有更好的方式,欢迎交流学习~

http://www.hrbkazy.com/news/56875.html

相关文章:

  • 网站百度收录秒收方法seo推广网络
  • 网站怎样做能排名靠前如何搭建公司网站
  • python做网站教程网络推广内容
  • 东莞市门户网站建设怎么样泉州关键词快速排名
  • 做一个宣传网站的策划书今日武汉最新消息
  • 网站建设微分销篮网最新消息
  • 佛山网站制作咨询必应搜索
  • 中国建筑招聘官方网站汕头百度网站推广
  • 上海奉贤做网站seo查询友情链接
  • 西安哪家公司做网站电商平台怎么做
  • 用php做网站的实训日志总结河北seo公司
  • 佛山网站建设开发我想做个网站怎么做
  • 如何做淘宝客网站疫情放开死亡人数最新消息
  • excel做邮箱网站怎么加3www快速排名程序
  • 门户网站策划方案常用的网络推广方式有哪些
  • 网站模块设计seo排名赚app靠谱吗
  • 网站每日签到怎么做东莞做网站哪个公司好
  • 东莞企业网站电话站长平台网站
  • 用单页做网站 文章直接写上去 百度收录关键词吗自己如何做一个网站
  • python3 网站开发深圳龙岗区疫情最新消息
  • 大连网龙网络科技网站seo优化方法
  • 租机网站开发临沂百度公司地址
  • 网页制作网站整合与测试广州各区最新动态
  • asp网站生成静态可口可乐网络营销策划方案
  • 成都网站公司网站建设百度热度
  • 山东网站制作策划网络推广营销
  • 做这种灰色的网站犯法太原百度公司地址
  • 在线做字网站网络营销产品
  • 做网站和开发app有什么不同百度服务商平台
  • 网站建设报价单ppt深圳小程序建设公司