您的位置:首页 > 移动开发 > IOS开发

iOS设计模式-责任链模式

2017-02-15 16:01 330 查看
(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刚好知道如何对付这次攻击,化解了人物可能受到的损伤。由于某种原因,如果没有盔甲可以对这次攻击做出响应,攻击的作用最终会传到人物。人物对攻击做出响应时,会表现为一定程度的损伤。

这种只让每个独立的防御道具对特定类型的攻击做出相应的机制,简化了人物使用各种防御道具的复杂性。每种盔甲各自负责非常特定的功能。这就是责任链模式的作用所在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息