责任链模式:使一个以上的对象都有机会能够处理某个请求

特点:

  • 链中的每个对象包含它下一个对象的引用和对事件的处理方法。请求在这个链上传递,直到链上的某一个对象决定处理此请求
  • 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,将请求的发送者与接收者解耦
  • 可以动态的改变处理对象成员的顺序,可以动态的增加减少处理对象

用途:

  • 多用于窗口系统中,处理鼠标键盘之类的事件

缺点:

  • 不能保证请求一定执行
  • 不易观察运行时特征,有碍于排错

举例:

不同类型的邮件有不同的处理方式,客户将邮件传给第一个处理者,处理者决定1.处理该邮件;2.通过继承至相同基类的引用传给下一个处理者

转载于:https://www.cnblogs.com/HectorHou/p/6028757.html

责任链模式——HeadFirst设计模式学习笔记相关推荐

  1. 命令模式——HeadFirst设计模式学习笔记

    命令模式:将"请求"封装成对象,以便使用不同的请求.日志.队列等来参数化其他对象.命令模式也支持撤销操作. 设计原则: 把方法的调用封装起来,调用此对象不需要知道它内部具体是如何运 ...

  2. 原型模式——HeadFirst设计模式学习笔记

    原型模式:通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的(clone) 特点: 向用户隐藏了创建新实例的复杂性 让用户可以产生未知类型的对 ...

  3. 代理模式——HeadFirst设计模式学习笔记

    代理模式:为另一个对象提供一个替身或占位符控制这个对象的访问 特点: 让代理对象控制对象的访问,被代理对象可以是远程对象(远程代理),创建开销较大对象(虚拟代理),或需要安全控制的对象(保护代理) 为 ...

  4. 【HeadFirst 设计模式学习笔记】6 命令模式

    1.这一节我们的任务是创建一个类似智能家居的万能遥控器,控制各种家电.我们需要将"请求"封装成对象(一个命令对象通过在特定接收者上绑定一组动作来封装请求),以便使用不同的请求.队列 ...

  5. 【HeadFirst 设计模式学习笔记】9 迭代器模式

    1.本节的一个话题引子是一个餐厅,它提供早餐和午餐,但是在订制菜单的时候,早餐(Pancake)和午餐(Dinner)的实现却造成了一些麻烦.订制早餐的菜单是用ArrayList这样一个数据池来维护的 ...

  6. 策略模式(headfirst设计模式学习笔记)

    鸭子的行为被封装 进入一组类中,能够轻易的扩展和改变.假设须要能够执行时改变行为! 策略模式定义了算法族.分别封装起来.让他们能够相互替换,此模式让算法的变化独立于使用算法的客户. 继承,相似之处用继 ...

  7. 【HeadFirst 设计模式学习笔记】13 MVC分析

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.M-V-C --Model--View--Controller,模式-视图-控制器,这是一种范型.模型对象正 ...

  8. 【HeadFirst 设计模式学习笔记】2 观察者模式

    1.我们需要理解报社.订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸.然后,出版者+订阅者就是观察者模式,只不过名称不一样,主题(S ...

  9. Java设计模式之行为型:责任链模式

    背景: 学校规定参加校招的同学必须要请假,且要有相关人员的签字,三天以下需辅导员签字.三到七天需要系主任签字,一个星期以上需要院长签字,更多的则需要校长签字! 上图将学生.辅导员.系主任.院长.校长组 ...

最新文章

  1. 如何优化你的网站快速提高流量
  2. java 动态数组的应用
  3. 老师学python可以干嘛-学 Python 都用来干嘛的?
  4. linux-free命令
  5. ssh根据姓名查询的时候报错java.lang.IndexOutOfBoundsException: Remember that
  6. Java中getResource()的用法
  7. 提供一个Android原生的Progress——SwipeToRefreshLayout下拉刷新时的等待动画
  8. 如何在command中使用log
  9. mysql 长连接 has gone away_MySQL server has gone away报错原因分析/
  10. VMware 修复 Fusion 和 Horizon 中的两个提权漏洞
  11. 产品经理三大文档--BRD、MRD、PRD解读
  12. 状态监测与故障智能诊断技术在能源动力机械内燃机的应用
  13. Java编程练习题:Demo17-Demo32
  14. Linux 工具链 error while loading shared libraries: libgettextsrc-0.19.8.1.so 解决方法
  15. 世界上有10种人,一种是懂二进制的人,一种是不懂二进制的人。
  16. 要不要考博?清华姚班助理教授写了个读博决策树
  17. jmeter前后置处理器
  18. “百度+创维”强力破局家电产业:中国AI大屏奇点临近
  19. 虚拟机和物理机之间互ping【局域网内ping不通,防火墙规则更改(win7为例)】
  20. 易语言打开C盘文件,易语言教程磁盘操作目录相关

热门文章

  1. 如何通过HTML标记或JS代码实现跳转返回页面顶部
  2. Android ViewFlipper滑动屏幕切换
  3. /proc/xx/maps命令
  4. makefile中使用变量
  5. 数据结构:栈--计算表达式
  6. springmvc二: @RequestMapping
  7. CentOS 服务器安全设置
  8. 《C++代码设计与重用》——2.5 浅拷贝和深拷贝
  9. 微服务架构分布式事务解决方案设计思路-(概念篇)
  10. volley框架下发送和读取cookie