其实责任链应该分为两种,一种是管道模式(Pipeline),另一种则是过滤链模式;
这次的话就创建一个过滤字符串的过滤链吧。
首先创建一个接口,抽取出一个通用方法。
创建两个具体实现过滤功能的实现类
再创建一个用来保存过滤链,并能依次执行过滤器的类
OK,但此时还没有一个保存具体要过滤事物以及启动过滤链的类,我们来创建一个
ThreadLocal是为了防止线程并发出现覆盖问题;
执行完毕,其实完全可以将ThreadLocal也放进执行过滤器的类,之所以单独创建一个类,是为了我们在过滤链中可以插入一个完整的过滤链。
比如这样
最后,利用递归玩点高难度的,也就是Tomcat里过滤器那样,先顺着走一遍过滤链,再反着走一遍
改造下通用接口类
再改造执行过滤器的类
BINGO!