黑马程序员技术交流社区

标题: 关于 代理模式 [打印本页]

作者: wdcew    时间: 2015-8-14 23:59
标题: 关于 代理模式
本帖最后由 wdcew 于 2015-8-15 00:02 编辑

代理模式好难,看了教程感觉有点晕乎乎,代理模式的如何实现呢,他的优点又再哪里呢?
作者: wowthe1st    时间: 2015-8-15 11:33
视频里教的代理模式是非常简单的代理了吧,基本就是组合的形式而已,声明一个成员放代理,方法实现里直接调用代理的方法完成,为了保证代理有我们要调用的方法,所以要让代理遵守某个协议;

好处是更利于程序的分工开发,二是利于代码的维护与扩展,
其实所有设计模式,最终目的基本都是为了代码的可维护性和可扩展性
作者: dzb5461883    时间: 2015-8-15 13:41
当对象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:42
dzb5461883 发表于 2015-8-15 13:41
当对象A发生一些行为,想告知对象B;

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

http://blog.sina.com.cn/u/5526870735
作者: Edware    时间: 2015-8-17 08:06
关注发生代理的三种情况,针对代理所需功能以及需求实现就可以。把握重心。
作者: wg592930    时间: 2015-8-17 11:17
代理 和协议是密不可分的,举个例子  学生学要找房子,但是呢学生没有找房子的能力,但是呢 中介有找房子的能力。学生可以通过中介代理找房子,那么 中介必须遵循一个找房子的协议
作者: wg592930    时间: 2015-8-17 11:19
其实可以往深里研究,比如说 单例模式 : 单例模式是,在程序执行时存在一个单例对象,它可以实现 多个类之间的信息共享





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2