设计模式学习笔记--拦截过滤器模式
来源:互联网 发布:手机淘宝怎么评价宝贝 编辑:程序博客网 时间:2024/04/30 10:38
三十一、拦截过滤器模式
拦截过滤器模式(Intercepting Filter Pattern),主要用于统一接收并过滤客户端的请求,根据过滤器的选择,将请求传送给对应的目标处理程序。
实现
创建过滤器接口IFilter
,接口实现类也就是不同的过滤类。创建目标处理程序类Target
,还有过滤器组合类FilterChain
,过滤器管理类FilterManager
以及客户端Client
。
过滤接口
IFilter.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 过滤器接口*/public interface IFilter { public void execute(String request);}
接口实现类
AuthenticationFilter.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 过滤器的接口实现类*/public class AuthenticationFilter implements IFilter { @Override public void execute(String request) { System.out.println("授权请求: "+request); }}
DebugFilter.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 过滤器的接口实现类*/public class DebugFilter implements IFilter { @Override public void execute(String request) { System.out.println("调试请求: "+request); }}
目标程序类
Target.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 目标程序类*/public class Target { public void execute(String request){ System.out.println("执行处理请求 "+request); }}
过滤器管理类
FilterManager.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 过滤器管理类*/public class FilterManager { FilterChain filterChain; public FilterManager(Target target){ filterChain = new FilterChain(); filterChain.setTarget(target); } public void setFilter(IFilter filter){ filterChain.addFilter(filter); } public void filterRequest(String request){ filterChain.execute(request); }}
组合过滤器类
FilterChain.java
package patterns.intercepting;import java.util.ArrayList;import java.util.List;/*** Created by lenovo on 2016/12/12 0012.* 过滤器组合类*/public class FilterChain { private List<IFilter> filters = new ArrayList<>(); private Target target; public void addFilter(IFilter filter){ filters.add(filter); } public void execute(String request){ for (IFilter filter:filters) { filter.execute(request); } target.execute(request); } public void setTarget(Target target){ this.target = target; }}
客户端
Client.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 客户端类,用于请求*/public class Client { FilterManager filterManager; public void setFilterManager(FilterManager filterManager) { this.filterManager = filterManager; } public void sendRequest(String request){ filterManager.filterRequest(request); }}
演示
InterceptingFilterPatternDemo.java
package patterns.intercepting;/*** Created by lenovo on 2016/12/12 0012.* 演示*/public class InterceptingPatternDemo { 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"); }}
输出
授权请求: Home调试请求: Home执行处理请求 Home
0 0
- 设计模式学习笔记--拦截过滤器模式
- 设计模式学习笔记--过滤器模式
- 设计模式(30)--拦截过滤器模式
- 设计模式【拦截过滤器模式InterceptingFileterPattern】
- 责任链设计模式(过滤器/拦截器)
- 设计模式学习—拦截过滤器模式(Intercepting Filter Design Pattern)
- Java拦截过滤器模式
- 拦截过滤器模式
- Java拦截过滤器模式
- 【设计模式】拦截过滤器模式(Intercepting Filter Pattern)
- 设计模式笔记八:过滤器模式
- J2EE模式--拦截过滤器模式
- 设计模式学习之过滤器模式
- 设计模式--过滤器模式
- 设计模式-过滤器模式
- 责任链设计模式(过滤器、拦截器)
- 责任链设计模式(过滤器、拦截器)
- 代理模式和拦截过滤器模式
- 成绩
- 参数类型
- freemarker---getter setter
- 汇编语言--指令和数据
- jdbc连接数据库使用sid和service_name的区别
- 设计模式学习笔记--拦截过滤器模式
- 人脸年龄估计
- java环境变量配置
- Hibernate(三)——框架中的关系映射
- 无向图的邻接多重链表存储算法(98)
- Hibernate(四)——缓存策略+lazy
- android对颜色和不透明度的定义
- 第15周 oj Problem F: 将字符串格式化后输出(串)
- Hrbust 2313 Circle Fan【模拟+思维】