责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。Tomcat中的Filter就是使用了责任链模式,创建一个Filter除了要在web.xml文件中做相应配置外,还需要实现javax.servlet.Filter接口
处理敏感的字符或者词汇的功能
第一版本:
一个处理的类,类中有一个方法,这个方法可以处理将各个String中的要替换的字符通过字符串的.replace方法进行替换,最后进行调用.这样也能解决问题,只是对于不同的字符做替换处理,只需在处理类中的方法中添加具体的处理方法,限定和约束比较多。
第二版本:
此时先定义一个抽象类Filter,类中包含了dofilter。
然后根据信息定义个需要处理的各类型信息的方法或者类,这里假设实现一个符号过滤HtmlFilter和敏感词词汇过滤ContentFilter,两个都继承上面定义的抽象类,并实现其中的方法
定义具体信息处理类Mesprocessor
在这里面我们可以单独在processor方法中区new那两个处理类,也可以直接建立一个filter类型的数组,将两个处理类都放在里面。然后循环进行过滤,此时此刻有一点缺点,就是过滤的先后顺序会按照数组的里面的下顺序进行,如果你想添加新的过滤处理,只需要在数组new新的对象。例如:Filter[ ] filterArray = { new HtmlFilter(),new Content() }
第三版本:
此版本中我们采用过滤连的思想,经一个个过滤器放在arraylist,思想跟第二版本差不多,但是此版本的灵活性、使用性大大升高
首先我们新建类FilterChain,此类主将各个过滤器放入arraylist数组中,提供一个数组构造、提供过滤器添加的方法
定义具体信息处理类Mesprocessor,调用FilterChain的dofilter进行处理