1.代理模式函数
举个例子:有一个婴儿,他自己不会本身吃饭和洗澡等等一些事情,因而婴儿就请了一个保姆,因而婴儿和保姆之间商定了一个协议,协议中写明了保姆须要作什么事情,而保姆就是这个代理人, 即:婴儿和保姆之间有个协议,保姆继承该协议,因而保姆就须要实现该协议中的条款成为代理人。
2.代理模式的关键点:atom
A完成一件事,可是本身不能完成,因而他找个代理人B 替他完成这个事情,他们之间便有个协议(protocol),B继承该协议来完成A代理给他的事情。 spa
3.病人找医生看病 的案例:代理
SickProtocol.h文件code
#import <Foundation/Foundation.h>对象
@protocol sickDelegate <NSObject>
//这个协议方法为治病,只能医生有治病这个能力,Sick病人没有
- (void) cure;继承
@endit
#import <Foundation/Foundation.h>
#import "SickProtocol.h"io
@interface Sick : NSObjectimport
@property(nonatomic, assign)NSString *name;
@property(nonatomic, strong)id<sickDelegate> delegate; (重点)
- (void) ill;
@end
Sick.h文件
#import "Sick.h"
@implementation Sick
- (void) ill
{
NSLog( @"医生我生病了...");
//由于我说出了本身的病情 医生开始给我治病 _delegate 医生(重点)
[_delegate cure];
}
-(void) dealloc{
NSLog( @"Sick dealloc %@", _name );
}
@end
Sick.m文件
#import "Sick.h"
@implementation Sick
- (void) ill
{
NSLog( @"医生我生病了...");
//由于我说出了本身的病情 医生开始给我治病 _delegate 医生
[_delegate cure];
}
@end
Doctor.h文件
#import <Foundation/Foundation.h>
#import "SickProtocol.h"
@interface Doctor : NSObject <sickDelegate>
@property(nonatomic, assign) NSString *name;
@end
Doctor.m文件
#import "Doctor.h"
@implementation Doctor
- (void) cure
{
NSLog( @"%@医生 :开始治病..", _name);
}
@end
main函数文件
#import <Foundation/Foundation.h>
#import "Doctor.h"
#import "Sick.h"
//代理模式:委托 ,委托其余的对象实现相关的功能,通常会有协议 protocolint main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); //如今我生病了 Sick *sick = [[Sick alloc]init]; sick.name = @"Mr.Du"; //医院给我推荐了一个医生 Doctor *doctor = [[Doctor alloc]init]; doctor.name = @"Rose"; //我找到了医生 sick.delegate = doctor; //说出了本身的病情 [sick ill]; } return 0;}