黑马程序员--protocol代理模式
2015-09-18 15:53
429 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
利用协议实现代理模式的主要思路:
1)定义一个协议,里面声明代理类需要实现的方法列表。
2)创建一个代理类,遵守上面的代理协议
3)在需要代理的类中,定义一个对象, 类型为id,且遵守代理协议的成员变量(delegate)。
4)在主类中调用成员变量delegate的方法,调用代理类的方法。
5)main.m或其他使用主类的文件中,为主类的成员变量赋值。
应用:学生通过中介找房子
findHouseProtocol.h //协议
#import <Foundation/Foundation.h>
@protocol findHouseProtocol <NSObject>
-(void)findHouse;
@end
Student.h
#import <Foundation/Foundation.h>
#import "findHouseProtocol.h"
@interface Student : NSObject
-(void)needHouse;
@property(nonatomic,strong)id<findHouseProtocol> delegate;
@end
Student.m
#import "Student.h"
@implementation Student
-(void)needHouse{
NSLog(@"学生需要一个房子");
[self.delegate findHouse];
}
@end
linkHome.h
#import <Foundation/Foundation.h>
#import "findHouseProtocol.h"
@interface linkHome : NSObject<findHouseProtocol>
@end
linkHome.m
#import "linkHome.h"
@implementation linkHome
-(void)findHouse{
NSLog(@"链家房产正在寻找房子。");
NSLog(@"链家房产找到房子。");
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Student.h"
#import "linkHome.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu = [Student new];
//代理的类
linkHome *link = [linkHome new];
stu.delegate = link;
[stu needHouse];
}
return 0;
}
利用协议实现代理模式的主要思路:
1)定义一个协议,里面声明代理类需要实现的方法列表。
2)创建一个代理类,遵守上面的代理协议
3)在需要代理的类中,定义一个对象, 类型为id,且遵守代理协议的成员变量(delegate)。
4)在主类中调用成员变量delegate的方法,调用代理类的方法。
5)main.m或其他使用主类的文件中,为主类的成员变量赋值。
应用:学生通过中介找房子
findHouseProtocol.h //协议
#import <Foundation/Foundation.h>
@protocol findHouseProtocol <NSObject>
-(void)findHouse;
@end
Student.h
#import <Foundation/Foundation.h>
#import "findHouseProtocol.h"
@interface Student : NSObject
-(void)needHouse;
@property(nonatomic,strong)id<findHouseProtocol> delegate;
@end
Student.m
#import "Student.h"
@implementation Student
-(void)needHouse{
NSLog(@"学生需要一个房子");
[self.delegate findHouse];
}
@end
linkHome.h
#import <Foundation/Foundation.h>
#import "findHouseProtocol.h"
@interface linkHome : NSObject<findHouseProtocol>
@end
linkHome.m
#import "linkHome.h"
@implementation linkHome
-(void)findHouse{
NSLog(@"链家房产正在寻找房子。");
NSLog(@"链家房产找到房子。");
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Student.h"
#import "linkHome.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu = [Student new];
//代理的类
linkHome *link = [linkHome new];
stu.delegate = link;
[stu needHouse];
}
return 0;
}
相关文章推荐
- 黑马程序员_编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
- 牛逼程序员养成记
- 黑马程序员-Java基础学习之银行业务调度系统
- 黑马程序员-Java基础学习之交通灯管理系统
- 黑马程序员-Java基础学习第九天笔记
- 黑马程序员-Java基础学习第八天总结
- Java实现栈和队列面试题
- 程序员该有的艺术气质—SOLID原则
- 黑马程序员-Java基础学习第七天总结
- 面试题 33
- “黑马程序员”HashSet
- 2015最火十大Android开源项目,是个程序员你就该看看!
- 什么情况让程序员处于水深火热中-兄弟连IT教育
- 程序员的自我修炼
- 程序员的噩梦,我的漏洞伤害了他人
- 2015程序员值得收藏的十大主流button模式
- 2015最火十大Android开源项目,是个程序员你就该看看!
- 面试题 31
- 一道面试题Lintcode196-Find the Missing Number
- 面试题总结-new 和malloc 区别