阿呆每次交易都有黑衣人来代替,他们通过手机交流,阿呆才是幕后。
// 手机(共同的接口)
@protocol ShouJi <NSObject>
- (void)TanPan;// 联系
@end
// XiaoDi.h 接头人(代理)
#import "ShouJi.h"
#import "aDai.h"
@interface XiaoDi : NSObject <ShouJi>
@property (nonatomic,assign) aDai *delegate;// 存放实体
@end
// XiaoDi.m
@implementation XiaoDi
- (void)TanPan
{
[_delegate TanPan];// 去调用真正实现的函数
}
@end
// aDai.h 实体
#import "ShouJi.h"
@interface aDai : NSObject <ShouJi>
@end
//
@implementation aDai
- (void)TanPan
{
NSLog(@"阿呆才是幕后主使");// 真正的实现
}
@end
- (void)viewDidLoad
{
[super viewDidLoad];
// 客户端调用
XiaoDi *xd = [[XiaoDi alloc] init];
aDai *ad = [[aDai alloc] init];
xd.delegate = ad;
[xd TanPan];
}
优点:
可以封装真实实现的部分
适用性:
----------分割线-------
平时开发iOS时经常看见代理模式,但是写法是代理封装起来而具体实现空出来留给用户写,这样封装了流程。
如UITableview的delegate