SPRING与设计模式---责任链模式
使用场景:当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。
spring框架中的应用:
spring安全框架security使用责任链模式,框架使用者可以动态地添加删除责任(处理request请求)。
UML类图:
活动图:
源码解析:currentPosition表示责任链的要处理请求链条节点的位置,使用additionalFilters来依次处理request请求。additionalFilters中的每个Filter成员都承担某一项具体职责,并且每个Filter都会被执行到。 责任链条的成员执行完自己的职责后,会回调链条的处理请求方法,责任链条会找到下一个链条成员来执行职责,直到链条尾端。
private static class VirtualFilterChain implements FilterChain {
private final FilterChain originalChain; //链条中的节点全部执行完后,处理request请求的对象
private final List<Filter> additionalFilters; //请求实际执行者,
private final FirewalledRequest firewalledRequest;
private final int size;
pri