标签:
/*
代理:.......................................................................................
【委托方】主动方 持有带协议的id指针,可以使用协议。
【代理方】被动方 遵从协议,实现方法。
代理:.......................................................................................
*/
//main.m
#import <Foundation/Foundation.h>
#import "Computer.h"
#import "USBMouse.h"
#import "USBFan.h"
#import "USBDisk.h"
int main(int argc, const char * argv[]) {
//创建出一台电脑
Computer *computer=[[Computer alloc] init];
//向电脑的USB接口中插入不同的USB设备
//USBDisk *udisk=[[USBDisk alloc] init];
//USBMouse *umouse=[[USBMouse alloc] init];
USBFan *ufan=[[USBFan alloc] init];
computer.delegate=ufan;
//USB设备就开始工作了
[computer doWork];
return 0;
}
//UsbProtocol.h
/*
USB接口的协议
只要遵从这个协议,该设备就可以插入到电脑上的USB接口上进行工作
*/
#import <Foundation/Foundation.h>
@protocol UsbProtocol <NSObject>
//运行的方法
- (void)execute;
@end
//USBDisk.h
//U盘
#import <Foundation/Foundation.h>
#import "UsbProtocol.h"
@interface USBDisk : NSObject<UsbProtocol>
@end
//USBDisk.m
#import "USBDisk.h"
@implementation USBDisk
- (void)execute
{
NSLog(@"进行数据的存储");
}
@end
//USBMouse.h
//USB鼠标
#import <Foundation/Foundation.h>
#import "UsbProtocol.h"
@interface USBMouse : NSObject<UsbProtocol>
@end
//USBMouse.m
#import "USBMouse.h"
@implementation USBMouse
- (void)execute
{
NSLog(@"开始操作电脑");
}
@end
//USBFan.h
//USB风扇
#import <Foundation/Foundation.h>
#import "UsbProtocol.h"
@interface USBFan : NSObject<UsbProtocol>
@end
//USBFan.m
#import "USBFan.h"
@implementation USBFan
- (void)execute
{
NSLog(@"开始送风");
}
@end
//Computer.h
//电脑
#import <Foundation/Foundation.h>
#import "UsbProtocol.h"
@interface Computer : NSObject
//相当于有一个USB接口,可以插入不同的USB设备
//持有协议的id指针属性
@property (weak) id<UsbProtocol> delegate;
//USB工作的方法
-(void) doWork;
@end
//Computer.m
#import "Computer.h"
@implementation Computer
- (void)doWork
{
[self.delegate execute];
}
@end
//2015-09-08 08:32:56.186 demo4[892:38137] 开始送风
标签:
原文地址:http://www.cnblogs.com/wanghengheng/p/4790528.html