iOS设计模式-责任链模式

(1)定义
责任连模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间发生耦合,此模式将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

(2)主要思想
对象引用了同一类型的另一个对象,形成一条链。链中的每个对象实现了同样的方法,用于处理对链中第一个对象发起的同一个请求;如果某个对象不知道如何处理请求就把请求传给下一个响应器

(3)类图
这里写图片描述
Handle是上层抽象类,定义handleRequest方法(处理他知道如何让处理的请求对象)。ConcreteHandler1和ConcreteHandler2实现了handleRequest方法(处理他们认识的请求对象)。Handle有一个指向另一个同类型实例的引用,即successor。当调用Handler实例的handleRequest方法不知道如何让处理请求时,它会用同样的方法把请求转发给successor,一直如此,直到传给链中的最后一个Handler

这里写图片描述
aClient有一个对Handler实例的引用,叫aHandler。aHandler是处理程序链的第一个对象,即aConcreteHandler。aConcreteHandler用它内部的successor引用和另一个Handler实例连接起来。

(4)何时使用
由多个对象可以处理请求,而处理程序只有在运行时才确定。
向一组对象发出请求,而不想显示指定处理请求的程序

(5)使用
在游戏中使用责任链模式
假定我们要开发一款游戏,里面的每个人物都可以通过做任务赚取点数来升级防御道具。防御道具可以使盾牌或者盔甲。每种形式的防御只能应付一种特定的攻击,如果防御道具不认识一种进攻,它就把进攻的作用传递给下一个会响应它的实体。比如,盔甲1不知道如何对付对手的攻击,所以把它传给下一个盔甲,盔甲2。盔甲2刚好知道如何对付这次攻击,化解了人物可能受到的损伤。由于某种原因,如果没有盔甲可以对这次攻击做出响应,攻击的作用最终会传到人物。人物对攻击做出响应时,会表现为一定程度的损伤。

这种只让每个独立的防御道具对特定类型的攻击做出相应的机制,简化了人物使用各种防御道具的复杂性。每种盔甲各自负责非常特定的功能。这就是责任链模式的作用所在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值