協議和委託 之 開車

 協議就相當於是C++中的純虛基類,它只能定義函數並且只能由其他類來實現。而委託則類似於Java接口,其實協議和委託之間並無必然聯繫,只是在Obj—C中常用協議來實現委託。
protocol-協議,就是使用了這個協議後就要按照這個協議來辦事,協議要求實現的方法就一定要實現。

delegate-委託,顧名思義就是委託別人辦事,就是當一件事情發生後,自己不處理,讓別人來處理。

#import <Foundation/Foundation.h>
//開車協議
@protocol DriveCarProtocol <NSObject>

@required
//要遵循開車協議的司機去開車, 更具有開車的本領
- (void)driveCar;
@end

//司機類
@interface Driver : NSObject<DriveCarProtocol>

@end
//司機會開車
@implementation Driver

//drive car method
- (void)driveCar
{
    NSLog(@"drive car");
}

@end

//老闆類
@interface Boos : NSObject
{
    //老闆要僱傭一個人,這個人是司機
    id<DriveCarProtocol> _myDriver;
}
@property(nonatomic, retain) id<DriveCarProtocol> myDriver;

//老闆讓司機開車
- (void)startDriverCarAction;
@end

@implementation Boos
@synthesize myDriver = _myDriver;

- (void)startDriverCarAction
{
    NSLog(@"Boos need drive car");
    //讓司機去開車
    [[self myDriver] driveCar];
}
@end

int main(int argc, const char * argv[])
{
    Boos *boos = [[Boos alloc] init];   //有個老闆    
    Driver *driver = [[Driver alloc] init];	//有個司機 
    //開始行動
    NSLog(@"Action");
    [boos setMyDriver:driver];  	//老闆僱傭司機 		           
	    
    [boos startDriverCarAction];	//老闆讓司機開車
    
    [boos release];   	//到了老闆下車                      
    [driver release];	//司機走了
    
    return 0;
}

協議和委託 其實就是把自己的事讓別人來幫我做。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章