委托模式同样是设计模式的一种。
委托模式:两个对象之间,不能直接联系,需要通过一个第三方的对象,帮助它们联系,叫委托模式。
借用买卖二手房的例子:
在使用委托模式时,我们需要使用协议。协议就是一套标准,在标准里面声明了很多方法,但却不管方法是怎么实现的。通常方法的实现都在受委托类(中介)中实现。而最后通过委托类(业主)调用。当然具体情况具体分析,这里只是一个简单的例子。
1.创建一个协议Landlord_Protocol.h:
//声明方法,遵循协议,则必须实现该方法
-(void)saleHouse;
2.中介类引入协议(获得代理权),并实现协议的方法
-(void)saleHouse{
NSLog(@"我是中介,我跟房东签订了协议,我要帮业主卖房子");
}
3.Landloard.h 声明协议属性
@property(nonatomic, assign)id<Landlord_Protocol> delegate;
//注册、登记卖房
-(void)registedHouse;
4.Landloard.m 实现方法
-(void)reistedHouse{
NSLog(@"我是业主,我已经将房子登记到中介处");
//判断,如果委托存在,并且遵循协议,即执行以下方法
if(self.delegate && [self.delegate conformsToProtocol:@protocol(Landlord_Protocol)]){
[self.delegate sellHouse];
}
}
执行结果: