代理模式是一种消息传递方式,一个完整的代理模式包括:委托对象、代理对象和协议。
代理主要由三部分组成:
-
协议:用来指定代理双方可以做什么,必须做什么。
-
代理:根据指定的协议,完成委托方需要实现的功能。
-
委托:根据指定的协议,指定代理去完成什么功能。
一个人Person对象,想去买电影票(询问电影票的剩余量,票价等信息),
但是由于自己没有空,所以他只能委托一个中介(代理商Agent对象) 帮他去完成这个动作,
最后代理商可以把(询问的电影票相关信息) 回馈给Person。这就是一种典型的设计模式
代理模式通常用于解决类似这样的问题:我们通过界面A打开了界面B,但在应用进行的过程中,界面B有时候也需要和A主动联络,比如点击某个按钮时。一个比较好的办法是,让A成为B的代理,这样B就可以在需要的时候给A发送消息了。
代理模式的一个好处是,B实际上不需要了解A的任何事情,只要知道A是自己的代理就可以了。在这种模式下,B依然独立与A,实现了松耦合。
对象A是对象B的代理,对象B需要向A发送消息,设置方法分四步:
1、在对象B的.h中定义一个protocol代理协议,并声明一个协议的属性变量
2、让对象B在适当的时候向代理对象A发送消息,比如触发按钮时。
3、让对象A遵从代理协议
4、通知对象B,现在A是它的代理