OC协议的应用-代理

来源:互联网 发布:淘宝怎么上淘抢购 编辑:程序博客网 时间:2024/05/14 21:36

        先说下代理模式是什么吧


        定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。



       这么说是不是不能理解,通俗的讲,就是一些任务自己不去实现,想让别人去实现的时候,就可以指定一个代理,让代理帮你去做。你只需要通知代理去做某某事

        下面举一个例子:肖野老师想去看一场电影, 可是他不能亲自去买票,  至于为什么, 可能是因为他要去练车, 约会没时间, 或者单纯的懒, 正好野哥在课上抓到了班长正在玩手机, 于是将这个任务委托给了班长。

        这时,可以定义一个teacher类(野哥),一个monitor类(代理类),monitor类帮助teacher类去买票或者问票价 并且返回消息 给teacher这样的话teacher只需要 调用 monitor就可以获得自己想要的消息 非常方便。

        下面看一下代码:
Teacher.h

声明协议,定义协议方法:询问电影名字,返回NSString类型数据,询问票价,返回NSInteger类型数据,
定义代理属性,为id类型,遵循TeacherDelegate协议, 只要遵循TeacherDelegate协议,都可以成为代理

Monitor.h

在NSObject后加上<TeacherDelegate>m, 表明班长类遵循协议,可以成为代理,可以调用协议里的所有方法
Monitor.m

协议里方法的实现;

下面在main.m里进行验证:

定义一个老师对象肖老师及班长对象,将班长设置为老师的代理,最后肖老师调用buyTicket方法成功问到了电影名及票价,去看了最爱看的喜羊羊

8 0