责任链模式,顾名思义,就是将需要实现的功能,拆分为各自专一的责任,组成一条责任链,来完成对数据的处理。
先看下面一段demo
需要被处理的对象类
1 |
|
责任处理器接口
1 | public interface Filter { |
责任处理器的两个接口1
2
3
4
5
6
7
8
9
10public class FirstFilter implements Filter {
public void doFilter(User user, Chain chain) {
//此处对需要处理的对象进行处理,完成自己的责任,完成之后还需要传给责任链中的下一位
user.setAge(1);
System.out.println("经过第一个处理器");
chain.doFilter(user);
}
}
1 | public class SecondFilter implements Filter { |
责任链接口
1 | public interface Chain { |
责任链实现类1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24public class FilterChain implements Chain {
private List<Filter> filters = new ArrayList();
private int pos = 0;
public FilterChain() {
filters.add(new FirstFilter());
filters.add(new SecondFilter());
}
public void doFilter(User user) {
if (pos < filters.size()){
Filter filter = filters.get(pos++);
filter.doFilter(user, this);
}
}
public static void main(String[] args) {
User user = new User();
new FilterChain().doFilter(user);
System.out.println(user);
}
}
运行结果1
2
3经过第一个处理器
经过第二个处理器
User{name='jungle', age=1}
以上责任链主要实现了两个功能,第一个处理器对user对象的年龄进行处理,第二个处理器对user对象的名字进行处理,可以看到,在对象走完整个责任链之后,对象的属性被初始化,整个责任链完成了自己的责任。在整个链中,每个处理器只需要完成自己负责的逻辑,完成之后便像工厂流水线一样传递到下一个处理器中,遵循了软件中高内聚,低耦合的思想,是一种非常经典的设计模式,一个非常经典的案例便是web应用服务器中的过滤器(Filter)。
tomcat中的责任链,我们常说的过滤器,即是使用的责任链设计模式,主要负责处理解析出来的request和response对象
接口
链的实现类
责任链处理完之后,抛个sevlet执行业务
以上便是责任链模式的所有内容,希望各位看完之后能有所收获。