OC---protocol代理设计模式
2014-11-17 18:45
316 查看
protocol代理设计模式
问题引入:
如果有些事情,我不想自己做,我需要引入一个代理,如下,定义一个Agent类,让它帮我查看余票、票价。。。
Agent.h
Agent.m
Person.h
Person.m
main.m
但问题是,如果我想要更换代理,需要在Person类里,修改很多地方,代码之间的联系太强了。。。
可以定义一个协议,让代理遵守这个协议;
当想要更换代理的时候,只要更换的代理同意也遵守这个协议就行,这样Person类就不用变动了。。。
TicketDelegate.h
Agent.h
Agent.m
Person.h
Person.m
main.m
问题引入:
如果有些事情,我不想自己做,我需要引入一个代理,如下,定义一个Agent类,让它帮我查看余票、票价。。。
Agent.h
Agent.m
Person.h
Person.m
main.m
但问题是,如果我想要更换代理,需要在Person类里,修改很多地方,代码之间的联系太强了。。。
可以定义一个协议,让代理遵守这个协议;
当想要更换代理的时候,只要更换的代理同意也遵守这个协议就行,这样Person类就不用变动了。。。
TicketDelegate.h
#import <Foundation/Foundation.h> // 声明一些跑腿方法 @protocol TicketDelegate <NSObject> // 返回票价 - (double) ticketPrice; // 还剩多少张票 - (int) leftTicketsNumber; @end
Agent.h
#import <Foundation/Foundation.h> #import "TicketDelegate.h" @interface Agent : NSObject <TicketDelegate> @end
Agent.m
#import "Agent.h" @implementation Agent // 剩余的票数 - (int)leftTicketsNumber { // ... 亲自跑电影院\或者打电话 return 1; } // 每一张票多少钱 - (double)ticketPrice { // ... 亲自跑电影院\或者打电话 return 1000; } @end
Person.h
#import <Foundation/Foundation.h> #import "TicketDelegate.h" @interface Person : NSObject - (void) buyTicket; // 拥有一个代理属性 // id代表代理的类名随便 // 但必须遵守TicketDelegate协议 @property (nonatomic, retain) id<TicketDelegate> delegate; @end
Person.m
#import "Person.h" @implementation Person // 买电影票 - (void)buyTicket { // 叫代理去帮自己买票(询问一下票价、询问一下票的剩余张数) double price = [_delegate ticketPrice]; int number = [_delegate leftTicketsNumber]; NSLog(@"通过代理的帮忙,票价=%f,还剩%d张票", price, number); } - (void)dealloc { [_delegate release]; [super dealloc]; } @end
main.m
#import <Foundation/Foundation.h> #import "Person.h" #import "Agent.h" #import "NextAgent.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 人 Person *p = [[Person alloc] init]; // 代理 Agent *a = [[Agent alloc] init]; // 设置人的代理 p.delegate = a; // 人打算看电影 [p buyTicket]; [a release]; [p release]; } return 0; }
相关文章推荐
- 黑马程序员——OC基础学习(五)---分类(Category),代码块Block和protocol代理设计模式
- OC-10-其他:block、protocol、代理设计模式
- OC学习——OC中的@protocol(@required、@optional)、代理设计模式
- 学习笔记:OC的protocol协议及代理设计模式
- Oc语言之Protocol代理设计模式
- OC学习——OC中的@protocol(@required、@optional)、代理设计模式
- 黑马程序员——OC学习——Protocol和代理设计模式
- 黑马程序员——入学Blog05----OC的protocol与代理模式
- 黑马程序员——OC语言——block、protocol、代理模式
- objective-c protocol和protocol代理设计模式
- OC_语法入门_day6_ARC(循环引用)/block代码块(闭包)/protocol协议(接口)/代理模式
- Protocol and Delegate 协议和代理(设计模式之代理模式)
- OC视频笔记5.4(协议的定义与使用)(代理设计模式)(代理设计模式思想)
- iOS开发篇——OC 协议和代理设计模式介绍
- 设计模式之Protocol实现代理模式
- OC-代理设计模式
- OC基础—代理模式设计
- 【Objective-C】OC中代理(委托)设计模式
- OC-中介找房-代理设计模式
- oc基础-设计代理模式理解