A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wdcew 中级黑马   /  2015-8-14 23:59  /  723 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wdcew 于 2015-8-15 00:02 编辑

代理模式好难,看了教程感觉有点晕乎乎,代理模式的如何实现呢,他的优点又再哪里呢?

6 个回复

倒序浏览
视频里教的代理模式是非常简单的代理了吧,基本就是组合的形式而已,声明一个成员放代理,方法实现里直接调用代理的方法完成,为了保证代理有我们要调用的方法,所以要让代理遵守某个协议;

好处是更利于程序的分工开发,二是利于代码的维护与扩展,
其实所有设计模式,最终目的基本都是为了代码的可维护性和可扩展性
回复 使用道具 举报
当对象A发生一些行为,想告知对象B;

    这时需要将对象A的代理对象(_delegate)设置成对象B,对象B实现代理方法即协议(protocol),当对象A发生某些行为之后,调用_delegate的相应方法,即可通知对象B。

ClassADelegate

@protocol ClassADelegate

    -(void)notify();

@end



ClassA

@interface ClassA : NSObject

@protocol (nonatomic,strong) id delegate;

-(void)happenSomething;

@end

@implementation ClassA

-(void)happenSomething{

    [self.delegate notify];

}

@end



ClassB

@interface ClassB : NSObject

@end



@implementation ClassB

-(void)notify{

    NSLog(@'ClassA happen something');

}

@end



main.m

int main(int argc,const char *argv[]){

    ClassA *classa = [ClassA new];

&nbs
回复 使用道具 举报
dzb5461883 发表于 2015-8-15 13:41
当对象A发生一些行为,想告知对象B;

    这时需要将对象A的代理对象(_delegate)设置成对象B,对象B实 ...

http://blog.sina.com.cn/u/5526870735
回复 使用道具 举报
关注发生代理的三种情况,针对代理所需功能以及需求实现就可以。把握重心。
回复 使用道具 举报
代理 和协议是密不可分的,举个例子  学生学要找房子,但是呢学生没有找房子的能力,但是呢 中介有找房子的能力。学生可以通过中介代理找房子,那么 中介必须遵循一个找房子的协议
回复 使用道具 举报
其实可以往深里研究,比如说 单例模式 : 单例模式是,在程序执行时存在一个单例对象,它可以实现 多个类之间的信息共享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马