首页 > 代码库 > Objective-C:11_代理设计模式

Objective-C:11_代理设计模式

代理设计模式:

    比如人要去看电影,需要买票(买票的过程就不管了)。这样我们可以找个代理去买票
    
    1、首先定义一个协议
        @protocol TicketDelegate <NSObject>
//返回票价
- (double)ticketPrice;
//还剩下多少张票
- (int)leftTicketsNumber;
        @end
 
    2、代理遵守这个协议
        @interface Agent : NSObject <TicketDelegate>
        @end
 
    3、在Person类中,声明@property需要遵守协议的变量,然后声明一个买电影票的方法
          @interface Person : NSObject
@property (nonatomic,strong) id<TicketDelegate> delegate;//这里不要写死了是那个代理类,使用id
//买电影票
- (void)buyTicket;
@end
 
    4、Person类的实现
         @implementation Person
- (void)buyTicket
{
    double price = [_delegate ticketPrice];
    int number = [_delegate leftTicketsNumber];
    NSLog(@"通过代理的帮忙,票价=%f,还剩下%d张票",price,number);
}
@end
 
代理设计模式:
        完成某件事,定义一个协议,只要类遵守这个协议,就可以完成这件事情。
        当需要使用代理的时候,我们声明的时候使用id这个万能指针,不需要确定是哪一个类去完成
        只需要将遵守协议的类的对象赋值给声明好的成员变量就可以了
 
 
 
 
 
 

Objective-C:11_代理设计模式