您的位置:首页 > 移动开发 > Objective-C

Objective-C语言——委托模式(代理模式)

2016-01-03 12:08 411 查看
Landlord.h

#import <Foundation/Foundation.h>
#import "HouseSaler.h"

@interface Landlord : NSObject

//这里最简单的委托模式
//这里使用 assign 是为了防止循环引用
//@property(nonatomic,assign) HouseSaler *delegate;

//使用正式协议的委托模式
@property (nonatomic,assign) id <Landlor_Protocol> delegate;

//登记房子
-(void)registerHouse;

//用于表示房东收到款了
-(void)registerMoney;

@end


Landlord.m

#import "Landlord.h"

@implementation Landlord
-(void)registerHouse
{

NSLog(@"我是房东,我已经将房子登记到中介处了");
//    //如果委托存在,调用委托的方法
//    if (self.delegate) {
//        [self.delegate saleHouse];
//    }

//如果委托存在,并且委托遵循指定协议
if (self.delegate && [self.delegate conformsToProtocol:@protocol(Landlor_Protocol)]) {
[self.delegate mustSaleHouse];
[self.delegate payMoney];

}

}

-(void)registerm
{
NSLog(@"我是房东,我收到钱了");
}

-(void)registerMoney
{
NSLog(@"我是房东,我收到钱了");
}
@end


HouseSaler.h

#import <Foundation/Foundation.h>

#import "Landlor_Protocol.h"

@class Landlord;//.h文件声明@class   .m文件用#improat导入类
@interface HouseSaler : NSObject <Landlor_Protocol>

@property(nonatomic,assign) Landlord *customer;

-(void)saleHouse;

@end


HouseSaler.m

#import "HouseSaler.h"
#import "Landlord.h"

@implementation HouseSaler

-(void)saleHouse
{
NSLog(@"我是中介,我替卖家卖房子");
}

//实现协议里卖房子的方法
-(void)mustSaleHouse
{

NSLog(@"我是中介,我与房东签了协议,我必须替房东卖掉房子");
}

-(void)payMoney
{

NSLog(@"我是中介,我卖掉房东了,钱我给你了");
[self.customer registerMoney];
}

@end


运行结果

2016-01-03 12:04:07.810 OC_LX_10_02[3033:73547]
我是中介,我替卖家卖房子
2016-01-03 12:04:07.811 OC_LX_10_02[3033:73547]
我是房东,我已经将房子登记到中介处了
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我与房东签了协议,我必须替房东卖掉房子
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我卖掉房东了,钱我给你了
2016-01-03 12:04:07.813 OC_LX_10_02[3033:73547]
我是房东,我收到钱了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: