Osheep

时光不回头,当下最重要。

iOS 责任链模式

一.什么是责任链模式?

责任链模式就是为一个请求或者一个动作创建一个接收者对象的链,这条链上的每一个对象都可以去响应和处理这个请求和动作,把发送者和接收者进行解耦,在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

《iOS 责任链模式》

责任链模式.png

二.为什么要使用责任链模式?

责任链模式可以把发送者和接收者进行解耦合,发送方只需把消息发送出去即可,接收者负责对消息进行处理,在工作中,有时候我们可能会遇到这样的情况, 你出差了或者你加班了, 需要向领导发送邮件,而领导则需要向他的领导发送邮件,这样一级一级的向上汇报,直到可以给你报销费用的的领导审批之后,你才能拿到辛苦费,如果你之前和哪位领导干过架,完了,人家不给你上报,那你就惨了

三.怎么使用责任链模式?

《iOS 责任链模式》

事件响应.png

上面两个方法应该很熟悉吧,对,这就是iOS 中UIView对事件处理的响应函数,这个我们就可以看做是责任链模式的例子

下面用一个儿子买玩具举个例子:

1.创建一个基类

《iOS 责任链模式》

基类.png
《iOS 责任链模式》

基类.png

2.儿子

《iOS 责任链模式》

儿子.png
《iOS 责任链模式》

儿子.png

3.爸爸

《iOS 责任链模式》

爸爸.png
《iOS 责任链模式》

爸爸.png

4.妈妈

《iOS 责任链模式》

妈妈.png
《iOS 责任链模式》

妈妈.png

5.具体实现

《iOS 责任链模式》

具体实现.png
《iOS 责任链模式》

具体实现.png
《iOS 责任链模式》

打印.png

菜鸟教程:http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html
脚本之家:http://www.jb51.net/article/81756.htm

其他设计模式

享元模式:http://www.jianshu.com/p/f9c53b9825e4
工厂模式:http://www.jianshu.com/p/6f3ffb1397f7

点赞