`

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

阅读更多


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

 

责任链模式类图:



 

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

 

我是用如下的方式用的



 

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

 

 

  • 大小: 22.5 KB
  • 大小: 23.4 KB
  • 大小: 47.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics