ITPub博客

首页 > 应用开发 > Java > 强化责任链模式

强化责任链模式

原创 Java 作者:壹頁書 时间:2017-03-20 18:32:24 0 删除 编辑
http://www.flyne.org/article/693

  1. import java.util.ArrayList;  
  2. import java.util.Iterator;  
  3. import java.util.List;  
  4.   
  5. interface Filter {  
  6.     String doFilter(String str, FilterChain chain);  
  7. }  
  8.   
  9. class HtmlFilter implements Filter {  
  10.     public String doFilter(String msg, FilterChain chain) {  
  11.         String r = msg;  
  12.         // 过滤msg中的HTML标记  
  13.         r = r.replace("<", "&lt;").replace(">", "&gt;");  
  14.         r = chain.doFilter(r, chain);  
  15.         return r;  
  16.     }  
  17. }  
  18.   
  19. class SensitiveFilter implements Filter {  
  20.     public String doFilter(String msg, FilterChain chain) {  
  21.         String r = msg;  
  22.         // 过滤敏感词  
  23.         r = r.replace("敏感", "").replace("被就业", "就业");  
  24.   
  25.         r = chain.doFilter(r, chain);  
  26.         return r;  
  27.     }  
  28. }  
  29.   
  30. class FilterChain implements Filter {  
  31.   
  32.     public List<Filter> filters = new ArrayList<Filter>();  
  33.   
  34.     public FilterChain addFilter(Filter f) {  
  35.         filters.add(f);  
  36.         return this;  
  37.     }  
  38.   
  39.     Iterator it = null;  
  40.   
  41.     public String doFilter(String msg, FilterChain chain) {  
  42.         if (it == null) {  
  43.             it = filters.iterator();  
  44.         }  
  45.         String result = msg;  
  46.         // 执行filters中的doFilter方法即可  
  47.         if (it.hasNext()) {  
  48.             Filter f = (Filter) it.next();  
  49.             result = (String) f.doFilter(msg, chain);  
  50.         }  
  51.         return result;  
  52.     }  
  53. }  
  54.   
  55. class MsgProcessor {  
  56.     private String msg;  
  57.     private FilterChain chain;  
  58.   
  59.     public MsgProcessor(String msg, FilterChain chain) {  
  60.         this.msg = msg;  
  61.         this.chain = chain;  
  62.     }  
  63.   
  64.     public String process() {  
  65.         return chain.doFilter(msg, chain);  
  66.     }  
  67. }  
  68.   
  69. public class MainClass {  
  70.     public static void main(String[] args) {  
  71.         // 需要被过滤的语句  
  72.         String msg = "被就业了:),敏感信息,<script>";  
  73.   
  74.         // 搞一个过过滤链  
  75.         FilterChain chain = new FilterChain();  
  76.         chain.addFilter(new HtmlFilter()).addFilter(new SensitiveFilter());  
  77.         // 实例化处理类  
  78.         MsgProcessor mp = new MsgProcessor(msg, chain);  
  79.         String r = mp.process();  
  80.   
  81.         System.out.println(r);  
  82.     }  
  83. } 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2135694/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 责任链模式
下一篇: 策略模式
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6339871