设计模式-责任链模式

责任链定义

当你想要让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式(Chain of Responsibility Pattern)

场景

自糖果机发布后,糖果公司收到的电子邮件数量已经超出了他们所能处理的范围。收到的电子邮件主要有四类:

  1. Fans寄来的信,他们喜欢新推出的游戏
  2. 父母寄来的信,抱怨他们沉溺于这个游戏
  3. 店家寄来的信,希望能够在某些地方也摆设糖果机
  4. 垃圾邮件
  • Fans的邮件送到CEO
  • 抱怨邮件给法律部门
  • 新机器请求邮件交给业务部门
  • 垃圾邮件删除

需求

设计程序:使用这个过滤程序处理收到的邮件

责任链模式

通过责任链模式,可以为某个请求创建一个对象链。每个对象依序检查此请求,并对其进行处理,或者将它传给链中的下一个对象

image

当收到电子邮件的时候,他会被送进第一个处理器,也就是SpamHandler。如果SpamHandler无法处理,就将它传给FanHandler,依次类推…

image

责任链的优点

  • 将请求的发送者和接受者解耦
  • 可以简化你的对象,因为它不需要知道链的结构
  • 通过改变链内的成员或调动它们的次序,允许你动态地新增或者删除责任

责任链的用途和缺点

  • 经常被使用在窗口系统中,处理鼠标和键盘之类的事件
  • 并不保证请求一定会被执行;如果没有任何对象处理它的话,它可能会落到链尾端之外
  • 可能不容易观察运行时的特征,有碍于除错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值