2018/2/25 责任链以及使用递归实现反向过滤

其实责任链应该分为两种,一种是管道模式(Pipeline),另一种则是过滤链模式;

这次的话就创建一个过滤字符串的过滤链吧。

首先创建一个接口,抽取出一个通用方法。

创建两个具体实现过滤功能的实现类

再创建一个用来保存过滤链,并能依次执行过滤器的类

OK,但此时还没有一个保存具体要过滤事物以及启动过滤链的类,我们来创建一个

ThreadLocal是为了防止线程并发出现覆盖问题;

执行完毕,其实完全可以将ThreadLocal也放进执行过滤器的类,之所以单独创建一个类,是为了我们在过滤链中可以插入一个完整的过滤链。

比如这样

最后,利用递归玩点高难度的,也就是Tomcat里过滤器那样,先顺着走一遍过滤链,再反着走一遍

改造下通用接口类

 

再改造执行过滤器的类

BINGO!

posted on 2018-02-25 21:19  羊飞  阅读(320)  评论(0编辑  收藏  举报

导航