责任链模式

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

屏幕快照 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开发中的响应链也是采用这种设计模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容