职责链模式(Chain Of Responsibility Pattern):避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求,将接受请求的对象连接成一条链,并且沿着链传递请求,知道有一个对象能狗处理它为止

职责链模式的结构

Handler(抽象处理者):它定义一个处理请求的接口,由于不同的具体处理者处理请求不同,因此在处理者中定义一个处理请求的方法,每个处理者的下一个处理者还是一个处理者,所以我们通过定义一个抽象的处理者指定下一个处理者的successor引用作为下一个处理者的关联,通过该引用处理者可以连成一条链。

abstract class Handler
{protected Handler successor;public void SetHandler(Handler handler){this.successor = handler;}public abstract void HandleRequest();
}

ConcreteHandler(具体处理者):处理用户传过来的请求,是抽象处理者的子类,通过调用具体处理者的方法我们可以判断是否能终止这条链,或者将处理转发到下一个具体处理者。

class ConcreteHandlerA : Handler
{public override void HandleRequest(){if (successor == null){Console.WriteLine("A终止");}else{//传递this.successor.HandleRequest();}}
}
class ConcreteHandlerB : Handler
{public override void HandleRequest(){if (successor == null){Console.WriteLine("B终止");}else{//传递this.successor.HandleRequest();}}
}

调用

Handler handler1 = new ConcreteHandlerA();
Handler handler2 = new ConcreteHandlerB();handler1.SetHandler(handler2);
//执行
handler1.HandleRequest();

职责链模式(Chain of Responsibility Pattern)相关推荐

  1. 37职责链模式(Chain of Responsibility Pattern)

    动机(Motivate):     在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合.     如何使请求的 ...

  2. atitit.设计模式(1)--—职责链模式(chain of responsibility)最佳实践O7 日期转换

    atitit.设计模式(1)---职责链模式(chain of responsibility)最佳实践O7 日期转换 1. 需求:::日期转换 1 2. 可以选择的模式: 表格模式,责任链模式 1 3 ...

  3. 职责链模式(Chain of Responsibility)(对象行为型)

    1.概述 你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决,不能解决就推卸给另外个一个部门(对象).至于到底谁来解决这个问题呢?政府部门就是为了可以避免屁民的请求与 ...

  4. 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)

    原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 责任链模式(Chain of ...

  5. 二十四种设计模式:责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern) 介绍 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求, ...

  6. 设计模式的理解: 职责链模式 (Chain of Responsibility)

    职责链模式(Chain of Responsibility Pattern),为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为型模式. ...

  7. 设计模式之职责链模式(Chain of Responsibility)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  8. 职责链模式(chain of responsibility)

    原文地址 一. 写在前面的 这么多的设计模式,我觉得职责链是我第一次看上去最简单,可是回想起来却又最复杂的一个模式. 因此,这个文章我酝酿了很久,一直也没有胆量发出来,例子也是改了又改,可是仍然觉得不 ...

  9. 重温设计模式(三)——职责链模式(chain of responsibility)

    一. 写在前面的 这么多的设计模式,我觉得职责链是我第一次看上去最简单,可是回想起来却又最复杂的一个模式. 因此,这个文章我酝酿了很久,一直也没有胆量发出来,例子也是改了又改,可是仍然觉得不够合理.所 ...

  10. 『设计模式』职责链模式(Chain of Responsibility) 可怜的加薪、请假之路

    23种设计模式+额外常用设计模式汇总 (持续更新) 问题抽象 客户端发出一个请求,会有很多对象都可以来处理这个请求,而且不同对象的处理逻辑是不一样的. 对于客户端而言,无所谓谁来处理,反正有对象处理就 ...

最新文章

  1. 【数据结构】某些难理解点
  2. VS遇到的各种bug
  3. 8086的两种工作模式_Lora自组网网关的两种工作模式
  4. php gtk中文介绍,PHP-GTK介绍及其应用_PHP教程
  5. 58同城沈剑:好的架构是进化来的,不是设计来的
  6. Spring中IoC的入门实例[转]
  7. python类属性的应用 子类继承可以节约空间
  8. 让代码看起来更舒服(1):选择适合的配色方案 (转)
  9. 使用PosixFilePermission的Java设置文件权限
  10. 2019,跟着大佬追逐技术前沿
  11. 在谷歌云盘训练YOLOV5模型
  12. 微信 iOS 收款到帐语音提醒开发总结
  13. 详解谷歌VR平台Daydream:有手柄就是不一样
  14. uni-app Image组件在加载图片发生错误时,显示默认图片
  15. python搬家具_Python语言之学会Python之后!亲朋好友都夸我厉害!用Python买到最优惠的家具...
  16. 非正式第十三届蓝桥杯大赛
  17. matlab 坐标点标记符号表
  18. 二线法和四线法测量电阻的原理及区别
  19. 如何修改Android应用程序的图标和名字?
  20. 百度云 php api接口调用 签名计算

热门文章

  1. 计算机组成原理题目题型总结)第三章:存储器
  2. 【C语言重点难点精讲】C语言中的重要符号
  3. (计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式
  4. 不定长内存池之apr_pool
  5. windows下使用net-snmp实现agent扩展(四)
  6. C++ WINDOWS下 wchar_t *和char * 相互转化总结篇
  7. 汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来
  8. 战术网络安全检查表 | Symantec Connect
  9. sublime 安装 插件
  10. nginx+php-fpm 502 bad gateway