public interface Filter { public void execute(String request); }
2.2 步骤 2
创建实体过滤器。 AuthenticationFilter.java
1 2 3 4 5 6
public class AuthenticationFilter implements Filter { @Override public void execute(String request) { System.out.println("Authenticating request: " + request); } }
*DebugFilter.java
1 2 3 4 5 6
public class DebugFilter implements Filter { @Override public void execute(String request) { System.out.println("request log: " + request); } }
2.3 步骤 3
创建 Target。 Target.java
1 2 3 4 5
public class Target { public void execute(String request){ System.out.println("Executing request: " + request); } }
2.4 步骤 4
创建过滤器链。 FilterChain.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public class FilterChain { private List<Filter> filters = new ArrayList<Filter>(); private Target target;
public void addFilter(Filter filter){ filters.add(filter); }
public void execute(String request){ for (Filter filter : filters) { filter.execute(request); } target.execute(request); }
public void setTarget(Target target){ this.target = target; } }
2.5 步骤 5
创建过滤管理器。 FilterManager.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public class FilterManager {
FilterChain filterChain;
public FilterManager(Target target){ filterChain = new FilterChain(); filterChain.setTarget(target); } public void setFilter(Filter filter){ filterChain.addFilter(filter); }
public void filterRequest(String request){ filterChain.execute(request); }
}
2.6 步骤 6
创建客户端 Client。 Client.java
1 2 3 4 5 6 7 8 9 10 11 12 13
public class Client {
FilterManager filterManager;
public void setFilterManager(FilterManager filterManager){ this.filterManager = filterManager; }
public void sendRequest(String request){ filterManager.filterRequest(request); }
}
三、测试
使用 Client 来演示拦截过滤器设计模式。
3.1 编写测试类
InterceptingFilterDemo.java
1 2 3 4 5 6 7 8 9 10 11 12 13
public class InterceptingFilterDemo {
public static void main(String[] args) { FilterManager filterManager = new FilterManager(new Target()); filterManager.setFilter(new AuthenticationFilter()); filterManager.setFilter(new DebugFilter());
Client client = new Client(); client.setFilterManager(filterManager); client.sendRequest("HOME"); }
}
3.2 执行程序,输出结果
Authenticating request: HOME request log: HOME Executing request: HOME