OC-中介找房-代理设计模式
来源:互联网 发布:淘宝联盟返利规则 编辑:程序博客网 时间:2024/04/29 08:01
定义一个Children类和一个Nurse类,并实例化一个保姆对象和孩子对象。当孩子哭的时候,告诉保姆“我需要你陪我玩”,当孩子饿的时候,要告诉保姆“我需要吃饭”,当孩子不舒服的时候,需要告诉保姆“我需要吃药”,当孩子玩脏了的时候,要告诉保姆”我需要洗澡“。保姆照顾孩子的行为,在控制台打印出来。
(1).Children.h文件
#import<Foundation/Foundation.h>
#import"FindService.h"
@interface Children :NSObject
{
@private
NSString *_name;
id <FindService> _delegate; //委托
ChildrenCare care;
}
@property (nonatomic,copy)NSString *name;
@property (nonatomic,assign)id <FindService> delegate;
- (id)initWithName:(NSString *)name withDelegate:(id <FindService>)delegate;
- (void)wantToFindService;
@end
(2).Children.m文件
#import"Children.h"
@interfaceChildren ()
- (void)startFindService:(NSTimer *)timer;
@end
@implementation Children
@synthesize name =_name;
@synthesize delegate =_delegate;
- (id)initWithName:(NSString *)name withDelegate:(id <FindService>)delegate
{
self = [super init];
if (self) {
self.name = name;
self.delegate = delegate;
}
return self;
}
- (void)wantToFindService
{
[NSTimerscheduledTimerWithTimeInterval:2target:selfselector:@selector(startFindService:)userInfo:nilrepeats:YES];
}
- (void)startFindService:(NSTimer *)timer
{
if ([self.delegaterespondsToSelector:@selector(findService:)]){
care = [self.delegatefindService:self];
}
if (care == kServicePlay) {
NSLog(@"%@说:我需要你陪我玩!",self.name);
}elseif (care ==kServiceEat) {
NSLog(@"%@说:我需要吃饭!",self.name);
}elseif (care ==kServiceMedicine) {
NSLog(@"%@说:我需要吃药!",self.name);
}elseif (care ==kServiceWash) {
NSLog(@"%@说:我需要洗澡!",self.name);
[timer invalidate];
}
printf("\n");
}
@end
(3).Nurse.h文件
#import<Foundation/Foundation.h>
#import"Children.h"
#import"FindService.h"
@interface Nurse :NSObject <FindService>
@end
(4).Nurse.m文件
#import"Nurse.h"
@implementation Nurse
staticint count = 1;
- (ChildrenCare)findService:(Children *)children
{
ChildrenCare care;
if(count == 1){
NSLog(@"%@哭了!",children.name);
care = kServicePlay;
}elseif (count ==2) {
NSLog(@"%@饿了!",children.name);
care = kServiceEat;
}elseif (count ==3) {
NSLog(@"%@不舒服!",children.name);
care = kServiceMedicine;
}else {
NSLog(@"%@脏了!",children.name);
care = kServiceWash;
}
count ++;
return care;
}
@end
(5).FindService.h文件
#import<Foundation/Foundation.h>
typedefenum {
kServicePlay =0,
kServiceEat = 1,
kServiceMedicine =2,
kServiceWash =3
} ChildrenCare;
@classChildren;
@protocol FindService <NSObject>
- (ChildrenCare)findService:(Children *)children;
@end
(6).main.m文件
#import<Foundation/Foundation.h>
#import"Children.h"
#import"Nurse.h"
int main(int argc,const char * argv[])
{
@autoreleasepool {
Nurse *nurse = [[Nursealloc]init];
Children *children = [[Childrenalloc]initWithName:@"Marry"withDelegate:nurse];
[children wantToFindService];
BOOL isTure = YES;
while (isTure) {
NSDate *date = [NSDatedate];
[[NSRunLoopcurrentRunLoop] runUntilDate:[datedateByAddingTimeInterval:8]];
isTure =NO;
printf("\n");
NSLog(@"程序退出了……");
}
}
return 0;
}
程序的运行结果如下图所示:- OC-中介找房-代理设计模式
- OC-中介找房-代理设计模式
- 【OC学习-22】协议和代理双剑合璧——中介找房的代理模式
- OC-代理设计模式
- OC---protocol代理设计模式
- OC中的代理设计模式
- OC中代理设计模式
- OC设计模式--代理模式
- 找人办事,代理设计模式(Proxy)
- 设计模式——代理VS中介者
- OC基础—代理模式设计
- OC视频笔记-代理设计模式
- [黑马程序员][OC]代理设计模式
- OC基础—代理设计模式
- OC循环渐进:代理设计模式
- 设计模式 - 中介模式
- 设计模式 - 代理模式、桥接模式、中介者模式、命令模式
- 【设计模式之三:模式对比】外观模式、代理模式与中介者模式的区别
- Python 迭代器和生成器
- HDU-1498 50 years, 50 colors 最小点覆盖
- FPC关键字
- 上海传智播客JAVASE_day08学习笔记
- Mac OS X 10.9.4编译Protobuf-2.4.1问题
- OC-中介找房-代理设计模式
- 翻转快排
- 多线程详解
- 【android】SpannableString详解及使用SpannableString设置复合文本
- 淘宝2013面试题-求首尾相连数组的最大子数组和
- 基于MySQL元数据的Hive的安装和简单测试
- C#序列化与反序列化
- hdu1164 Eddy's research I
- 30天自制操作系统之第12天 定时器(1)