Intercepting Filter模式
Intercepting Filter模式的用途
Intercepting Filter模式通常用在某些消息需要应该被处理但目标处理应该包装到任意的一组前置、后置处理流程中例如消息的转换、转义等等。
Intercepting Filter模式的构成
通常由5个基本的组件组成:
1.FilterManager
2.FilterChain
3.IFilter interface
4.Context
5.ITarget interface
FilterManager
FilterManager类是Intercepting Filter模式的边界,客户程序在特定的上下文(由Context接口定义)通过FilterManager处理目标操作(由ITarget接口定义)。另外,FilterManager负责FilterChain的创建、初始化和执行。
FilterChain
FilterChain维护一组filter和Target。
IFilter
IFilter接口只有一个方法,先做前置处理,如果处理没有问题就让FilterChain去处理接下来的filter。如果中途发生了错误Filter返回或抛出异常。执行完一系列Filter以后就执行target的处理,然后以同样的方式返回,Filter可以做一些后置处理。基本的流程如下图
下面这张图表示的是当某个Filter中出现错误或异常的时候,就不执行Target的处理,而直接返回FilterChain中进行后置操作。
ITarget
ITarget接口实现类是消息的接受者或者包装者。
Context
Context应该是相当抽象的,它可以使不同的类或者是一组类,或是Map。例如在Core J2EE Patterns – Intercepting Filter的实现中Context是ServletRequest和ServletResponse。
参考资料
Intercepting Filter Design Pattern
