委託模式

簡單的房屋銷售委託例子

#import <Foundation/Foundation.h>

@protocol SaleHouse <NSObject>//協議頭文件

-(void)saleHouse;

@end


#import <Foundation/Foundation.h>

#import "SaleHouse.h"//賣房者聲明部分,遵循賣房協議

@interface HouseSaler : NSObject<SaleHouse>

@property(retain,nonatomic) NSString *name;

@property(assign,nonatomic) int age;

+(id)houseSalerWithName:(NSString *) n andAge:(int) a;

-(void)saleHouse;

@end


#import "HouseSaler.h"//賣房者實現部分

@implementation HouseSaler

+(id)houseSalerWithName:(NSString *) n andAge:(int) a{

HouseSaler *h = [HouseSalernew];

   h.name = n;

   h.age = a;

return [h autorelease];

}

-(void)saleHouse{

NSLog(@"我是房屋銷售%@,%d,正在努力幫房東賣房子",self.name,self.age);

}

@end


#import <Foundation/Foundation.h>

#import "SaleHouse.h"

@interface Landlord : NSObject//房東聲明部分

@property(retain,nonatomic) NSString *name;

@property(assign,nonatomic) int age;

+(id)landLordWithName:(NSString *) n andAge:(int) a;

@property(assign,nonatomic) id<SaleHouse>deleagte;//設置代理

-(void)shouqian;

@end


#import "Landlord.h"//房東實現部分

@implementation Landlord

+(id)landLordWithName:(NSString *) n andAge:(int) a{

Landlord *l = [Landlordnew];

   l.name = n;

   l.age = a;

return [l autorelease];

}

-(void)shouqian{

if ([self.deleagteconformsToProtocol:@protocol(SaleHouse)]) {

if ([self.deleagterespondsToSelector:@selector(saleHouse)]) {

           [self.deleagtesaleHouse];

       }

   }

NSLog(@"我是房東%@,%d,正在等着收錢",self.name,self.age);

}

@end


#import <Foundation/Foundation.h>

#import "HouseSaler.h"

#import "Landlord.h"

int main(int argc, constchar * argv[])//main函數測試

{

@autoreleasepool {

HouseSaler *h = [HouseSalerhouseSalerWithName:@"小麥"andAge:23];

Landlord *l = [LandlordlandLordWithName:@"小明"andAge:30];

       l.deleagte = h;//指定代理

       [l shouqian];

   }

return 0;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章