Java Intercepting Filter Pattern(拦截过滤器)
来源:互联网 发布:python基础环境搭建 编辑:程序博客网 时间:2024/06/10 16:49
Java Intercepting Filter Pattern(拦截过滤器)
拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。
- 过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。
- 过滤器链(Filter Chain) - 过滤器链带有多个过滤器,并在 Target 上按照定义的顺序执行这些过滤器。
- Target - Target 对象是请求处理程序。
- 过滤管理器(Filter Manager) - 过滤管理器管理过滤器和过滤器链。
- 客户端(Client) - Client 是向 Target 对象发送请求的对象。
- 创建过滤器接口 Filter。
/** * 1. 创建过滤器接口 Filter。 * @author mazaiting */public interface Filter { /** * 执行 */ void execute(String request);}
- 创建实体过滤器。
/** * 2. 创建实体过滤器。 * @author mazaiting */public class DebugFilter implements Filter{ public void execute(String request) { System.out.println("request log: " + request); }}/** * 2. 创建实体过滤器。 * @author mazaiting */public class AuthenticationFilter implements Filter{ public void execute(String request) { System.out.println("Authenticating request: " + request); }}
- 创建 Target。
/** * 3. 创建 Target。 * @author mazaiting */public class Target { public void execute(String request){ System.out.println("Executing request: " + request); }}
- 创建过滤器链。
/** * 4. 创建过滤器链。 * @author mazaiting */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; } }
- 创建过滤管理器
/** * 5. 创建过滤管理器。 * @author mazaiting */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); }}
- 创建客户端 Client。
/** * 6. 创建客户端 Client。 * @author mazaiting */public class Client { FilterManager filterManager; public void setFilterManager(FilterManager filterManager) { this.filterManager = filterManager; } public void sendRequest(String request){ filterManager.filterRequest(request); } }
- 使用 Client 来演示拦截过滤器设计模式。
/** * 7. 使用 Client 来演示拦截过滤器设计模式。 * @author mazaiting */public class Test { 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"); }}
- 打印结果
Authenticating request: HOMErequest log: HOMEExecuting request: HOME
阅读全文
0 0
- Java Intercepting Filter Pattern(拦截过滤器)
- 【设计模式】拦截过滤器模式(Intercepting Filter Pattern)
- 设计模式学习—拦截过滤器模式(Intercepting Filter Design Pattern)
- Java Filter Pattern(过滤器模式)
- Petstore中的J2EE Pattern之Intercepting Filter
- 过滤器模式-Filter Pattern
- Java实现(08)——过滤器模式(Filter Pattern)
- Java设计模式——过滤器模式(Filter Pattern)
- Intercepting Filter模式
- Intercepting Filter模式详解
- 过滤器模式(Filter Pattern)
- Core J2EE Pattern:拦截过滤器
- Spring过滤器filter拦截服务
- Filter(过滤器/拦截器)
- java Filter-(java 过滤器)
- Filter过滤器周期、Filter拦截过滤、Filter执行链
- 设计模式【过滤器模式Filter Pattern】
- 【设计模式】过滤器模式(Filter Pattern)
- Java Data Access Object Pattern(数据访问对象模式)
- Java 邮件(问题解决)
- Java 邮件(JavaMail)
- Java Pinyin4j(汉字转拼音)
- Java Front Controller Pattern(前端控制器模式)
- Java Intercepting Filter Pattern(拦截过滤器)
- Java Service Locator Pattern(服务器定位模式)
- Java Transfer Object Pattern(传输对象模式)
- Android Exception(全局异常)
- 我的开源包
- MySQLProxy实现MySQL的读写分离
- GitHub优秀开源工具---Android
- 优秀的开源项目
- Eclipse 运行Openfire源码