C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)

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

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

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第1张图片

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

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

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第2张图片

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

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第3张图片

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第4张图片

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第5张图片

C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式)_第6张图片

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

Handler2.Next=handler3;

Handler3.Next=handler1;

<完>

你可能感兴趣的:(C#面向对象模式设计第二十讲:Chain Responsibility 职责链模式(行为型模式))