OC-委托模式

来源:互联网 发布:阿里云 centos7 lnmp 编辑:程序博客网 时间:2024/06/04 18:52

概念

委托模式:两个对象间,不能够直接联系,需要一个第三方对象,帮助他们联系,这一种模式,我们称为”委托模式“。

例:一个简单的委托模式
房东—–>委托—>中介—->卖房—>买家
1、先创建两个类HouseHost类和HouseSale类,以及协议文件HouseHostProtocol:在协议文件中我们创建两个方法:
@protocol HouseHostProtocol
-(void)mustSaleHouse;
-(void)payMoney;
@end

2、判断房东是否有向中介提交委托(登记),这里需要在HouseHost类中增加一个判断登记的方法:
@interface HouseHost : NSObject
@property(nonatomic,assign)id delegate;
//登记房子
-(void)registerHouse;
//新增一个方法,表示房东是否收到钱
-(void)receiveMoney;
@end
3、实现登记的方法:

@implementation HouseHost-(void)registerHouse{    NSLog(@"我是房东,我已经将房子登记到中介处");    //如果委托存在,并且遵循指定协议    if (self.delegate&&[self.delegate conformsToProtocol:@protocol(HouseHostProtocol)]) {        [self.delegate mustSaleHouse];        [self.delegate payMoney];    }}-(void)receiveMoney{    NSLog(@"我是房东,我收到钱了");}

4、在HouseSale类中实现协议中的方法:先导入头文件

@interface HouseSale : NSObject<HouseHostProtocol>@property(nonatomic,strong)HouseHost *housrHost;@end

实现方法:

@implementation HouseSale-(void)mustSaleHouse{    NSLog(@"我是中介,我跟房东签订了协议,我必须给房东卖房");}-(void)payMoney{    NSLog(@"我是中介,我卖掉房子了,我抽了佣金,剩下的钱给你");    [self.housrHost receiveMoney];}@end

5、在主函数中调试

   //分别创建房东对象和中介对象    HouseHost *h1=[HouseHost new];    HouseSale *s1=[HouseSale new];    //设置中介成为房东的代理    h1.delegate=s1;    s1.housrHost=h1;    //调用房东方法    [h1 registerHouse];
0 0
原创粉丝点击