代理设计模式:
比如人要去看电影,需要买票(买票的过程就不管了)。这样我们可以找个代理去买票
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这个万能指针,不需要确定是哪一个类去完成
只需要将遵守协议的类的对象赋值给声明好的成员变量就可以了
时间: 2024-10-13 23:58:49