责任链
责任链模式(Chain of Responsibility)是Web项目中最经常用到的一个设计模式,比如是Apache Tomcat 的对Encoding的 处理,Struts2 的拦截器, jsp servlet 的Filter 等等,都是基于责任链模式设计的。比如有一个作业任务,先有一个对象对其负责处理,之后又交给其他的一个对象处理,一次传递下去,这是最通俗最简单的责任链模式的应用。但是责任链模式不仅仅的的就局限于这一种的最简单的应用,比如通信领域的短信验证码的获取,请求验证码---->发送验证码-----> 处理验证码----->提交验证码----->得到结果 等等的应用都和责任链模式密布可分。不一定非要在设计中就是用设计模式,但是联系联系周围的环境,思考思考周边的应用,自然的规律的轮回,都都感觉和设计模式有瓜葛。
现在就模拟对网站信息处理的字符处理展示下什么是责任链模式:
首先给出一个Filter接口:
public interface Filter {
String doFilter(String str);
}
接着下面是三个实现了Filter接口的类:
FaceFilter代码如下:
public class FaceFilter implements Filter {
public String doFilter(String str) {
return str.replace(":)", "^V^");
}
}
HTMLFilter代码如下
public class HTMLFilter implements Filter {
public String doFilter(String str) {
//process the html tag <>
String r = str.replace('<', '[')
.replace('>', ']');
return r;
}
}
SesitiveFilter代码如下:
public class SesitiveFilter implemen