码迷,mamicode.com
首页 > 编程语言 > 详细

Java Responsibility FilterChain

时间:2015-06-20 18:25:23      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:

一、目标

增加filterchain功能

 

二、代码

1.Filter.java

1 public interface Filter {
2     public String doFilter(String str);
3 }

 

2.FilterChain.java

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 public class FilterChain implements Filter {
 5 
 6     private List<Filter> filters = new ArrayList<Filter>();
 7     
 8     public String doFilter(String str) {
 9         for(Filter f : filters){
10             str = f.doFilter(str);
11         }
12         return str;
13     }
14 
15     //把函数的返回值设为FilterChain,返回this,就能方便链式编写代码
16     public FilterChain addFilter(Filter filter) {
17         filters.add(filter);
18         return this;
19     }
20 
21 }

 

3.HTMLFilter.java

1 public class HTMLFilter implements Filter {
2 
3     @Override
4     public String doFilter(String str) {
5         return str.replace(‘<‘, ‘[‘).replace(">", "]");
6     }
7 
8 }

 

4.SensitiveFilter.java

1 public class SensitiveFilter implements Filter {
2 
3     @Override
4     public String doFilter(String str) {
5         return str.replace("敏感", "幸福");
6     }
7 
8 }

 

5.MsgProcessor.java

 1 public class MsgProcessor {
 2     
 3     //private List<Filter> filters = new ArrayList<Filter>();
 4     FilterChain filterChain;
 5     private String msg;
 6     
 7     public FilterChain getFilterChain() {
 8         return filterChain;
 9     }
10 
11     public void setFilterChain(FilterChain filterChain) {
12         this.filterChain = filterChain;
13     }
14 
15     
16     public String getMsg() {
17         return msg;
18     }
19 
20     public void setMsg(String msg) {
21         this.msg = msg;
22     }
23 
24     public String process() {
25         return filterChain.doFilter(msg);
26     }
27 }

 

6.Test.java

 1 public class Test {
 2 
 3     @org.junit.Test
 4     public void testFilter(){
 5         
 6         MsgProcessor processor = new MsgProcessor();
 7         
 8         String msg = "<html>敏感字眼</html>"; 
 9         processor.setMsg(msg);
10         
11         FilterChain fc1 = new FilterChain();
12         fc1.addFilter(new HTMLFilter());
13         
14         FilterChain fc2 = new FilterChain();
15         fc2.addFilter(new SensitiveFilter());
16         
17         //由于FilterChain实现了Filter接口,所以FilterChain同时也是Filter,所以可以调用addFilter增加fc2
18         fc1.addFilter(fc2);
19         
20         processor.setFilterChain(fc1);
21         
22         String result = processor.process();
23         System.out.println(result);
24         
25     }
26 
27 }

 

三、运行结果

技术分享

 

Java Responsibility FilterChain

标签:

原文地址:http://www.cnblogs.com/shamgod/p/4590835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!