首页 > 代码库 > 简单的协议应用-代理模式
简单的协议应用-代理模式
协议(protocol):
<> 遵守某个协议,只要遵守了这个协议,相当于拥有协议里面的所有方法声明
- 声明一系列方法
- 编译器不强求实现协议里所有的方法
- 分类和协议都只能声明方法,不能声明成员变量
- NSObject是基协议
假设一个人要买票,但是他没有空,需要一个代理去帮他问问票价多少啊,还有几张票啊~
协议TicketDelegate.h,这里指代理所需要拥有的方法。
//// TicketDelegate.h// 协议的应用-代理模式//// Created by Mekor on 14-8-30.// Copyright (c) 2014年 Mekor. All rights reserved.//#import <Foundation/Foundation.h>//声明一些跑腿方法@protocol TicketDelegate <NSObject>//返回票价-(double)ticketPrice;//还剩多少张票-(int)leftTicketsNumber;@end
人类:
//// main.m// 协议的应用-代理模式//// Created by Mekor on 14-8-30.// Copyright (c) 2014年 Mekor. All rights reserved.//#import <Foundation/Foundation.h>#import "TicketDelegate.h"@interface Person : NSObject- (void) buyTicket;// 拥有一个代理属性// id代表代理的类名随便// 但必须遵守TicketDelegate协议@property (nonatomic, retain) id<TicketDelegate> delegate;@end
//// Person.m// 协议的应用-代理模式//// Created by Mekor on 14-8-30.// Copyright (c) 2014年 Mekor. All rights reserved.//#import "Person.h"@implementation Person//买电影票-(void)buyTicket{ //叫代理帮自己去买票 double price=[_delegate ticketPrice]; int number=[_delegate leftTicketsNumber]; NSLog(@"通过代理的帮助,票价=%f,还剩%d张票",price,number);}@end
代理:
//// Agent.h// 协议的应用-代理模式//// Created by Mekor on 14-8-30.// Copyright (c) 2014年 Mekor. All rights reserved.//#import <Foundation/Foundation.h>#import "TicketDelegate.h"@interface Agent : NSObject<TicketDelegate>@end
//// Agent.m// 协议的应用-代理模式//// Created by Mekor on 14-8-30.// Copyright (c) 2014年 Mekor. All rights reserved.//#import "Agent.h"@implementation Agent//剩余的票数-(int)leftTicketsNumber{ return 1;}//每一张票多少钱-(double)ticketPrice{ return 1000;}@end
main.m文件
1 // 2 // main.m 3 // 协议的应用-代理模式 4 // 5 // Created by Mekor on 14-8-30. 6 // Copyright (c) 2014年 Mekor. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>10 #import "Person.h"11 #import "Agent.h"12 int main(int argc, const char * argv[])13 {14 15 @autoreleasepool {16 Person *p = [[Person alloc] init];17 Agent *a=[[Agent alloc]init];18 p.delegate=a;19 [p buyTicket];20 }21 return 0;22 }
简单的协议应用-代理模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。