定义接口 Filter_
public interface Filter_ {
void doFilter(MyFilterChain chain);
}
定义接口实现类 MyFilter1
public class MyFilter1 implements Filter_ {
public void doFilter(MyFilterChain chain) {
System.out.println("过滤IP开始。。。。。");
chain.doFilter();
System.out.println("过滤IP结束。。。。。");
}
}
定义接口实现 MyFilter2
public class MyFilter2 implements Filter_ {
public void doFilter(MyFilterChain chain) {
System.out.println("过滤敏感词开始。。。。。");
chain.doFilter();
System.out.println("过滤敏感词结束。。。。。");
}
}
定义接口 FilterChain
public interface FilterChain {
void doFilter();
}
定义过滤器链实现类 MyFilterChain
public class MyFilterChain implements FilterChain {
LinkedList chanList = new LinkedList();
int index = 0;
public MyFilterChain add(Filter_ filter) {
chanList.add(filter);
return this;
}
public void doFilter() {
if (index == chanList.size()) {
return;
}
Filter_ f = (Filter_) chanList.get(index);
index++;
f.doFilter(this);
}
}
测试类 Test
/**
* 责任链模式(过滤器、拦截器都可以使用链模式)
*/
public class Test {
public static void main(String[] args) {
MyFilterChain chain = new MyFilterChain();
chain.add(new MyFilter1()).add(new MyFilter2());
chain.doFilter();
}
}