设计模式之责任链模式(tomcat filters)


责任链模式是指由某件任务可以由很多处理者处理,这些处理者保存着下一个处理者的引用,行程一条链,每个处理者只能处理该任务或者将任务交由下一个处理者处理,直到该任务被某个处理者处理或者最终没有处理者为止,该任务由最开始并不知道是谁来处理这个任务,只是把任务抛给第一个处理者而已。

责任链模式类图:



 

个人觉得也可以不用把一个handler注入另一个handler,虽然与原始的责任链模式类图有点儿出入,单只要理解责任链模式思想,灵活运用就可以。

我是用如下的方式用的



 

Tomcat过滤器(filter)实现原理即是用的责任链模式,但也不是一个filter引用另一个filter,是一个FilterChain统一管理所有filters为一个链,以下为我画的tomcat filter原理类图,有一些实现细节没有全画出来,比如ApplicationFilterChain类其实维护的是一个ApplicationFilterConfig(对filter的包装,加入了filterName、mapping关系等属性)类的数组,并不直接是Filter类的数组,但为了能更直观简单的体现原理,就没有把太细节的东西画出来

 

 

猜你喜欢

转载自danding.iteye.com/blog/2363975