黑马程序员技术交流社区

标题: iOS开发 delegate 模式理解 [打印本页]

作者: FFFF001    时间: 2016-7-5 23:10
标题: iOS开发 delegate 模式理解
本帖最后由 FFFF001 于 2016-8-6 22:54 编辑

#if 0

iOS开发之 delegate 模式理解 (如有错误之处,望请指正...)

delegate

    1 * 模式理解
    2 * 解析
    3 * 模式实现

1. 模式理解
*   代理模式就是:[代理 调用协议的方法] ==> 间接达到某个家伙不想干或干不了的事情.
2. 解析
    *  这个模式最主要的就是分清"代理属性""代理对象"
        * 代理属性
            指有需求或有要求的一方.比如:     
                    经理通知程序员修改代码.    经理有要求..
                    工厂需要招代理商.         工厂有需求...
                    婴儿需要保姆照顾.         婴儿干不了...
            这个时候就可以将代理属性设为需求这一方.
            也就是就是在经理,工厂,婴儿类里写上 @property (nonatomic, strong) id <遵循的Protocol> delegate;
        * 代理对象
            指可以协助处理事物的对象.就是遵守协议的一方.他会将协议方法实现.这是他的能力.
            说白了就是某件事别人不想干,或干不了,他能处理,就让他干了这件事.
3.  模式实现
    *   经理检查代码,觉得代码不合理,通知程序员修改代码
/*-----------------------------协议--------------------------------*/
@protocol XiuGaiDaiMaProtocol <NSObject>

- (void)xiuGaiDaiMa;   // 需要找一个能修改代码的人

@end
/*-----------------------------经理--------------------------------*/
@interface Manager : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) id <XiuGaiDaiMaProtocol> delegate; // 经理需要个能修改代码的人

- (void)jianChaCode;  // 检查代码

@end

@implementation Manager

- (void)jianChaCode {
   
    NSLog(@"代码太烂,需要修改.."); // 检查代码发现太烂, 需要程序员修改
    [self.delegate xiuGaiDaiMa]; // 检查代码发现太烂, 需要程序员修改
}

@end

/*-----------------------------程序员--------------------------------*/
@interface Programmer : NSObject <XiuGaiDaiMaProtocol>

@property (nonatomic, copy) NSString *name;

@end

@implementation Programmer

- (void)xiuGaiDaiMa {           // 程序员的能力,修改代码
   
    NSLog(@"程序员修改代码");
}

@end
/*------------------------------实现-------------------------------*/
int main(int argc, const char * argv[]) {
   
   
    Manager *manager_Wang = [[Manager alloc] init];
    Programmer *programmer_Li = [[Programmer alloc] init];
   
    manager_Wang.delegate = programmer_Li;

    [manager_Wang jianChaCode];
}

作者: weather    时间: 2016-7-5 23:13
你该睡觉了
作者: QYY0322    时间: 2016-7-5 23:20
虽然我看不懂,但是感觉好厉害的样子




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