C++行为型模式-职责链模式

1.1 基本概念

职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这类对象链接成一条链,并沿着这条链传递请求,直到有对象处理它为止。

1.2 模式结构

 (1)Hander(抽象处理者)

定义了一个处理请求的接口;

(2)ConcreteHander(具体处理者)

处理它所负责的请求,如果可处理该请求,就处理掉这个请求;否则将该请求转发给它的下一个可以处理该请求的对象,所以它必须能访问它的下一个可以处理同样请求的对象;

(3)Client(客户类):

向处理对象提出具体的请求。

1.3 优缺点

优点:

  • 处理者对于请求者完全透明,请求者无需事先知道谁来处理;
  • 它允许多与一个的处理者对象根据自己的逻辑来决定哪一个处理者最终处理这个命令,提高系统的扩展性;
  • 扩展灵活,新增具体请求者时无需修改原有系统的代码;
  • 责任链模式减低了发出命令的对象和处理命令的对象之间的耦合;

缺点:

  • 产生许多细颗粒对象;
  • 不一定能被处理,可能到末端也没被处理或者中间写错;
  • 比较长的责任链,可能涉及多个处理对象,性能问题,还有调试不方便;
  • 建链不当,可能造成循环调用,导致系统进入死循环;

1.4 应用场景

  1. 多个对象可以处理同一请求,但具体由哪个对象处理,则需要动态决定时。
  2. 在请求者不明确的情况下需要向多个对象中的一个提交请求时。
  3. 需要动态的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值