(七)软件设计模式:职责链模式

职责链模式

职责链是什么

职责链是为请求创建了一个接收者对象的链。每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

例如:学生想请假,院长只能批2天假,校长可以批7天假。

学生联系院长,院长联系校长,学生不用知道校长的联系方式,也能请假,降低了学生与校长的耦合度

请求: 学生请假  

职责链:学生=>院长=>校长

职责链怎么用

用户只需将请求发送到职责链

职责链有什么优点

  1. 降低耦合度:对象之间只负责传送请求,无需过多了解
  2. 增加扩展性:可添加处理对象,比如增加班主任请一天假
  3. 增加灵活性:可动态改变对象,比如,校长没空换成副校长,不会影响系统功能
  4. 简化关联性:对象只需保存下一个对象的引用,比如学生只需要院长的电话就能请假
  5. 责任明确化:每个类只负责增加的工作,就好像院长只请两天,多或者少他都不管

职责链有什么缺点

  1. 不能保证每个请求一定被处理:你不知道最大可以批几天,请半个月,就没法批假
  2. 长职责链会影响系统
  3. 增加客户端复杂性

职责链能用在哪

  1. 多个对象可以处理一个请求
  2. 可指定一组对象处理请求
  3. 不清楚处理者,像多个处理者发送请求

职责链模式的扩展

纯职责链模式:一个请求必须被某处理者全部接受,负责推给下家,比如请假

不纯职责链模式:一个请求可以由多个处理者负责,一个负责一部分请求,比如装水,一个杯子装一点,直到全部水装起来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值