filter设计模式-复杂的责任链-消除for循环小技巧.
来源:互联网 发布:数据库两张表关联查询 编辑:程序博客网 时间:2024/05/30 04:13
消除for循环两种方法.
1.责任链
2.递归
Filter算是责任链的模式中最复杂的设计模式优雅之处:
1. 无for循环
2. 请求前后都可以进行过滤.
3.动态
再简单说下几种实现方式:
1.普通的责任链:
for循环
2. 无for循环的这责任链:
public Filter next;
缺点: 静态,修改较麻烦.
3. 小技巧, 把成员属性next ,收归到Chain中管理,通过计算得出, 并且放在形参中传递.
优点: 1.无for 2.变更链条改动成本更低,直接变更List 3.能够实现request和response的处理
4. 这种是基于代理的责任链,好处是调用链过程中你是看不到filter.调用的.
典型例子是 mybatis的 Interceptor .
需要你通过 plugin()方法实现每个filter的封装代理类. 将需要拦截的类进行装饰. 把所有原类请求到代理到Interceptor.intercept(Invocation invocation)上.
比3的好处是 不需要将chain作为形参往下传.
filter模式也可以用责任链来实现,不过静态.不好动态修改.(Intercepting Filter模式详解 https://yq.aliyun.com/articles/46958)
https://my.oschina.net/raining0822/blog/278445 有说通过编程小技巧,巧妙实现消除next.
https://www.dozer.cc/2014/11/chain-of-responsibility.html 几种实现性能测试.
那上面4中实现的性能到底如何呢?(下面测试的是吞吐量,数字越大越好)
流程引擎更复杂的责任链
0 0
- filter设计模式-复杂的责任链-消除for循环小技巧.
- 设计模式---责任链(模拟Servlet的filter)
- Java Filter 与 责任链设计模式
- java 设计模式 责任链 filter
- for循环的小技巧
- Android的设计模式-责任链模式
- 【小话设计模式】行为型之责任链模式
- python中for循环的小技巧
- 责任链设计模式
- 责任链设计模式
- 设计模式---责任链
- 责任链设计模式
- 设计模式----责任链
- 设计模式-责任链
- 责任链设计模式
- 责任链设计模式
- 设计模式:责任链
- [设计]责任链模式
- iOS音频播放(二):AudioSession
- WEB 端批量移动设备管理控制工具 STF 的环境搭建和运行
- ehcache 集群使用 rmi方式
- MTK11B GPRS Network connection
- 1024. Palindromic Number (25)(-selfdone)
- filter设计模式-复杂的责任链-消除for循环小技巧.
- Handler post(Runnable runnable)和sendMessage(Message msg)的区别比较
- kvm安装学习笔记01
- 导入项目后src包变成文件夹
- ASP .Net Core 使用 Dapper 轻型ORM框架
- Ubuntu 终端中的字体,变成同一种颜色?
- Halcon中OCR的实现及关键函数解析
- 爬山
- maven的安装