//
// main.m
// ProxyDemo
//
// Created by 千雅爸爸 on 16/10/7.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Worker.h"
#import "Boss.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//代理模式下:两个角色:代理方,委托方
//有点像java的监听setonclicklistener,但是不是
//程序当中的单独的一个类,无法完成其他的工作的时候,当另外一个类可以玩橙过的时候,可以通过这样来做。
//0:首先确认委托方和代理者,
//1:委托方来指定协议和设置属性,
//2:让代理方去遵守协议,实现方法
//3:设置代理
//boss让worker 去买东西
Worker *worker = [[Worker alloc] init];
Boss *boss = [[Boss alloc]init];
[boss setDelegate:worker];
[boss sendCommand];
}
return 0;
}
//
// Boss.h
// ProxyDemo
//
// Created by 千雅爸爸 on 16/10/7.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import <Foundation/Foundation.h>
//协议可以直接写在委托方这里
@protocol BossDelegate <NSObject>
-(void)buywood;
@end
//+++++++++++++协议结束+++++++++
@interface Boss : NSObject
//这里使用这个属性是为了设置代理
@property (nonatomic,strong) id <BossDelegate> delegate;
-(void)sendCommand;
@end
//
// Boss.m
// ProxyDemo
//
// Created by 千雅爸爸 on 16/10/7.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import "Boss.h"
@implementation Boss
-(void)sendCommand{
NSLog(@"send command");
[self.delegate buywood];
}
@end
//
// Worker.h
// ProxyDemo
//
// Created by 千雅爸爸 on 16/10/7.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Boss.h"
//要想成为boss的代理,必须要实现协议
@interface Worker : NSObject <BossDelegate>
@end
//
// Worker.m
// ProxyDemo
//
// Created by 千雅爸爸 on 16/10/7.
// Copyright © 2016年 kodulf. All rights reserved.
//
#import "Worker.h"
@implementation Worker
-(void)buywood{
NSLog(@"工人买木头");
}
@end