世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
- 意图
请求过滤,过滤器+职责链 - 类图
- 实例
interface Filter {
/**
* 过滤
* @param request
*/
void filter (String request);
}
static class AuthFilter implements Filter {
@Override
public void filter(String request) {
System.out.println("auth filter " + request);
}
}
static class DebugFilter implements Filter {
@Override
public void filter(String request) {
System.out.println("debug filter " + request);
}
}
static class Target {
public void exe (String request) {
System.out.println("execute request " + request);
}
}
static class FilterChain {
private List<Filter> filterChain;
private Target target;
public FilterChain () {
filterChain = new ArrayList<>(16);
target = new Target();
}
public void addFilter (Filter filter) {
filterChain.add(filter);
}
public void doIt (String request) {
filterChain.forEach(filter -> filter.filter(request));
target.exe(request);
}
- 测试
public static void main(String[] args) {
FilterChain filterChain = new FilterChain();
filterChain.addFilter(new AuthFilter());
filterChain.addFilter(new DebugFilter());
filterChain.doIt("myRequest");
}
运行结果:
auth filter myRequest
debug filter myRequest
execute request myRequest