设计模式之责任链模式
2013-08-05 10:08
393 查看
责任链模式 ---在java的过滤器和拦截器的核心模式
1.模拟Response和Request两个 类
2.两个接口,FIlter和FilterChain接口
3.两个实现Filter的类,HtmlFilter和SensitiveFilter --- 一个实现FilterChian的接口的类DefaultChain
public class HtmlFilter implements Filter {
@Override
public void doFilter(Request request, Response response,FilterChain filterChain) {
String requestMsg = request.getRequestMsg();
request.setRequestMsg(requestMsg.replaceAll("<","[").replaceAll(">","]"));
filterChain.doFilter(request, response);
String responseMsg = response.getResponseMsg();
response.setResponseMsg(responseMsg+"HtmlFilter处理过----");
}
}
4.测试打印结果:
public class Main {
public static void main(String[] args) {
Request request = new Request();
request.setRequestMsg("没事做,学学设计模式,<script><css+div>,被就业,你妹的");
Response response = new Response();
response.setResponseMsg("测试response。。。。");
DefaultFilterChain defaultFilterChain = new DefaultFilterChain();
Filter htmlFilter = new HtmlFilter();
Filter sensitiveFilter = new SensitiveFilter();
//FilterChain添加 Filter
defaultFilterChain.addFilter(htmlFilter).addFilter(sensitiveFilter);
//执行拦截器---
defaultFilterChain.doFilter(request, response);
System.out.println(request.getRequestMsg());
System.out.println(response.getResponseMsg());
}
}
打印结果:
没事做,学学设计模式,[script][css+div],就业,妹妹的
测试response。。。。SensitiveFilter处理过----HtmlFilter处理过----
1.模拟Response和Request两个 类
public class Request { private String requestMsg; public String getRequestMsg() { return requestMsg; } public void setRequestMsg(String requestMsg) { this.requestMsg = requestMsg; } }
public class Response { private String responseMsg; public String getResponseMsg() { return responseMsg; } public void setResponseMsg(String responseMsg) { this.responseMsg = responseMsg; } }
2.两个接口,FIlter和FilterChain接口
public interface Filter { void doFilter(Request request,Response response,FilterChain filterChain); }
public interface FilterChain { void doFilter(Request request,Response response); }
3.两个实现Filter的类,HtmlFilter和SensitiveFilter --- 一个实现FilterChian的接口的类DefaultChain
public class HtmlFilter implements Filter {
@Override
public void doFilter(Request request, Response response,FilterChain filterChain) {
String requestMsg = request.getRequestMsg();
request.setRequestMsg(requestMsg.replaceAll("<","[").replaceAll(">","]"));
filterChain.doFilter(request, response);
String responseMsg = response.getResponseMsg();
response.setResponseMsg(responseMsg+"HtmlFilter处理过----");
}
}
public class SensitiveFilter implements Filter { @Override public void doFilter(Request request, Response response,FilterChain filterChain) { String requestMsg = request.getRequestMsg(); request.setRequestMsg(requestMsg.replaceAll("被就业","就业").replaceAll("你妹","妹妹")); filterChain.doFilter(request, response); String responseMsg = response.getResponseMsg(); response.setResponseMsg(responseMsg+"SensitiveFilter处理过----"); } }
public class DefaultFilterChain implements FilterChain { private List<Filter> filterList = new ArrayList<Filter>(); private int index = 0; public DefaultFilterChain addFilter(Filter filter){ this.filterList.add(filter); return this; } @Override public void doFilter(Request request, Response response) { if(index == this.filterList.size()){ return; } Filter filter = this.filterList.get(index); index++; filter.doFilter(request, response, this); } }
4.测试打印结果:
public class Main {
public static void main(String[] args) {
Request request = new Request();
request.setRequestMsg("没事做,学学设计模式,<script><css+div>,被就业,你妹的");
Response response = new Response();
response.setResponseMsg("测试response。。。。");
DefaultFilterChain defaultFilterChain = new DefaultFilterChain();
Filter htmlFilter = new HtmlFilter();
Filter sensitiveFilter = new SensitiveFilter();
//FilterChain添加 Filter
defaultFilterChain.addFilter(htmlFilter).addFilter(sensitiveFilter);
//执行拦截器---
defaultFilterChain.doFilter(request, response);
System.out.println(request.getRequestMsg());
System.out.println(response.getResponseMsg());
}
}
打印结果:
没事做,学学设计模式,[script][css+div],就业,妹妹的
测试response。。。。SensitiveFilter处理过----HtmlFilter处理过----
相关文章推荐
- 设计模式——责任链模式
- 设计模式学习--责任链模式
- 设计模式—责任链模式
- c#设计模式之责任链模式
- 设计模式:责任链模式
- 设计模式(十八):责任链模式
- java设计模式之责任链模式
- GOF 23 设计模式之 责任链模式(Chain Of Responsibility)
- python设计模式(责任链模式)
- 设计模式之责任链模式
- Java设计模式学习记录-责任链模式
- 浅谈Java设计模式(十七)责任链模式(Chain of Responsibility)
- 设计模式 笔记 责任链模式 chain of responsibility
- 设计模式之责任链模式
- 设计模式之责任链模式--- Pattern chain-of-responsibility
- 设计模式学习笔记——责任链模式
- c++23种设计模式之责任链模式
- Java设计模式之责任链模式
- 设计模式之责任链模式
- 设计模式学习-每日一记(23.责任链模式)