Interceptor模式
模式的用途
Interceptor模式有着广泛的用途,例如:
- 监控应用程序的工作状态
- 提供了改变应用程序行为的可能性
- 提供了为应用程序扩展新特性的可能性
- 实现应用的扩展而不需要知道应用的其他部分
- 实现应用程序而不需改变现有的代码
- 新的扩展能够或者不能够影响当前的系统
Intecetor模式的构成
Interceptor模式有3个基础的组件
1.IInterceptor 接口
2.Dispatcher
3.Context
IInterceptor 接口可以定义任意数量的接口方法供Dispatcher调用。通常每个方法都只有一个参数Context。IInterceptor 有各种实现登录、授权、参数验证等等。
Dispatcher通常也实现IInterceptor 接口。有多种方式可以实现分派功能,例如Dispatcher根据某种优先级调用Intecetor或者当Interceptor抛出异常时标志整个拦截过程的结束。
Context用来承载供Interceptor使用的数据和保存由Interceptor产生的数据。除了不同的IInterceptor可能会有不同的Context 实现,同一个IInterceptor不同的方法也会有不同的实现。
1.IInterceptor
- 一个或多个方法
- 针对多种方法有一种或多种Context类型
- 执行的结果传递给Dispatcher
- Dispatcher依据Context的状态确定下一步操作。
- Disaptcher对不同的Exception进行不同的处理。
2.Dispatcher
- Dispatcher可以实现或者不实现IInterceptor接口。
- 分派的机制可以有多种(区分优先顺序、随即、依赖Context…)。
