首页 > 设计模式 > Intercepting Filter模式

Intercepting Filter模式

2009年11月28日 admin 发表评论 阅读评论

Intercepting Filter模式的用途

Intercepting Filter模式通常用在某些消息需要应该被处理但目标处理应该包装到任意的一组前置、后置处理流程中例如消息的转换、转义等等。

Intercepting Filter模式的构成

通常由5个基本的组件组成:

1.FilterManager 
       2.FilterChain
       3.IFilter interface
       4.Context
       5.ITarget interface

InterceptingFilter_classes

FilterManager

FilterManager类是Intercepting Filter模式的边界,客户程序在特定的上下文(由Context接口定义)通过FilterManager处理目标操作(由ITarget接口定义)。另外,FilterManager负责FilterChain的创建、初始化和执行。

FilterChain

FilterChain维护一组filter和Target。

IFilter

IFilter接口只有一个方法,先做前置处理,如果处理没有问题就让FilterChain去处理接下来的filter。如果中途发生了错误Filter返回或抛出异常。执行完一系列Filter以后就执行target的处理,然后以同样的方式返回,Filter可以做一些后置处理。基本的流程如下图

InterceptingFilter_basicFlow

下面这张图表示的是当某个Filter中出现错误或异常的时候,就不执行Target的处理,而直接返回FilterChain中进行后置操作。

InterceptingFilter_exceptionalFlow

ITarget

ITarget接口实现类是消息的接受者或者包装者。

Context

Context应该是相当抽象的,它可以使不同的类或者是一组类,或是Map。例如在Core J2EE Patterns – Intercepting Filter的实现中Context是ServletRequest和ServletResponse。

 

参考资料

Intercepting Filter Design Pattern

Core J2EE Patterns – Intercepting Filter

MSDN – Intercepting Filter

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.