幸运星空

Lucker的程序人生

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(根据MSDN WebCast相关课程整理)

在一些情况下,请求的接收者可能多种多样,变化无常,如下图所示:

clip_image002

请求的发送者需要维护多个耦合,以处理请求信息的传达。这就存在多个强耦合。

GoF:使多个对象都有机会处理请求,从而避免请求的发送者和接收者的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理了它为止。

clip_image004

由多个Handler的子类共同构成一个单向链表的数据结构,Next指针指向它的后继元素。当Handler不能处理所传递的请求时,就将这个请求传递到下一个Handler对象,直到最后一个。其中的Next属性用于维护传递的链条。

clip_image006

clip_image008

clip_image010

clip_image012

可以通过Handler的Next属性在运行时动态的修改链条的传递次序:

Handler2.Next=handler3;

Handler3.Next=handler1;

<完>

posted on 2012-03-21 16:53  Lucker  阅读(494)  评论(0编辑  收藏  举报