首页 > 设计模式 > Interceptor模式

Interceptor模式

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

模式的用途

Interceptor模式有着广泛的用途,例如:

  • 监控应用程序的工作状态
  • 提供了改变应用程序行为的可能性
  • 提供了为应用程序扩展新特性的可能性
    • 实现应用的扩展而不需要知道应用的其他部分
    • 实现应用程序而不需改变现有的代码
    • 新的扩展能够或者不能够影响当前的系统

 

Intecetor模式的构成

Interceptor模式有3个基础的组件

1.IInterceptor 接口
       2.Dispatcher
       3.Context

InterceptorClassDiagram[1]

 

IInterceptor 接口可以定义任意数量的接口方法供Dispatcher调用。通常每个方法都只有一个参数Context。IInterceptor 有各种实现登录、授权、参数验证等等。

Dispatcher通常也实现IInterceptor 接口。有多种方式可以实现分派功能,例如Dispatcher根据某种优先级调用Intecetor或者当Interceptor抛出异常时标志整个拦截过程的结束。

Context用来承载供Interceptor使用的数据和保存由Interceptor产生的数据。除了不同的IInterceptor可能会有不同的Context 实现,同一个IInterceptor不同的方法也会有不同的实现。

InterceptorSequenceDiagram[2]

 

1.IInterceptor

  • 一个或多个方法
  • 针对多种方法有一种或多种Context类型
  • 执行的结果传递给Dispatcher
    • Dispatcher依据Context的状态确定下一步操作。
    • Disaptcher对不同的Exception进行不同的处理。

2.Dispatcher

  • Dispatcher可以实现或者不实现IInterceptor接口。
  • 分派的机制可以有多种(区分优先顺序、随即、依赖Context…)。

 

参考资料

Interceptor Design Pattern

The Interceptor Pattern

分类: 设计模式 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.