美文网首页
责任链模式

责任链模式

作者: jiangamh | 来源:发表于2016-04-13 23:29 被阅读56次

    责任链的主要思想是,对象引用同一类型的对象,形成一条链,链中的每个对象实现了相同的方法,处理链中对一个对象发起的同一个请求,如果一个对象不知道如果处理请求,它就把他传到下一个响应器。责任链类图如下:

    屏幕快照 2016-04-13 下午11.15.04.png

    就以此类图说明,假定有三个对象Avatar对象avatar ,MetalArmor对象armor和CryatelShield对象shield,构成责任链shield-》armor-》avatar,现在收到一个攻击假定为attack对象,此时,shield会收到handleAttack:attack的消息,shield会调用用handleAttack方法应对攻击,shield发现自己并不能处理这类的攻击,于是它将该消息传给了责任链中的下一个响应者armor,armor调用handleAttack方法,发现自己也不能处理该类型的攻击,也只能传给avatar,因为之前的对象都不能处理该类攻击,avatar只能自己来处理该类攻击,avatar角色表现出受到攻击,血量下降等。如果sheild和armor中一个能够完全处理该类的攻击,那么就不会将消息传递到下一个响应者,avatar就不会受到攻击的消息。这只是个责任链使用的一个例子,通过例子更能够深入理解这种设计模式,
    其实我们iOS开发中的响应链也是采用这种设计模式。

    相关文章

      网友评论

          本文标题:责任链模式

          本文链接:https://www.haomeiwen.com/subject/eqlglttx.html