OC-中介找房-代理设计模式
来源:互联网 发布:营销网络 编辑:程序博客网 时间:2024/04/29 10:26
OC-中介找房-代理设计模式
定义一个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"
@interface Children ()
- (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);
}else if (care ==kServiceEat) {
NSLog(@"%@说:我需要吃饭!",self.name);
}elseif (care ==kServiceMedicine) {
NSLog(@"%@说:我需要吃药!",self.name);
}else if (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
static int count = 1;
- (ChildrenCare)findService:(Children *)children
{
ChildrenCare care;
if(count == 1){
NSLog(@"%@哭了!",children.name);
care = kServicePlay;
}else if (count ==2) {
NSLog(@"%@饿了!",children.name);
care = kServiceEat;
}else if (count ==3) {
NSLog(@"%@不舒服!",children.name);
care = kServiceMedicine;
}else {
NSLog(@"%@脏了!",children.name);
care = kServiceWash;
}
count ++;
return care;
}
@end
(5).FindService.h文件
#import <Foundation/Foundation.h>
typedef enum {
kServicePlay = 0,
kServiceEat = 1,
kServiceMedicine = 2,
kServiceWash = 3
} ChildrenCare;
@class Children;
@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];
[[NSRunLoop currentRunLoop] 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循环渐进:代理设计模式
- 设计模式 - 中介模式
- 设计模式 - 代理模式、桥接模式、中介者模式、命令模式
- 【设计模式之三:模式对比】外观模式、代理模式与中介者模式的区别
- 软件项目文档
- 计算机网络中一些常见性能指标总结
- 第十七周项目6 读取文件,多文件处理
- JAVA环境配置
- Hibernate 的<generator class="native"></generator>的不同属性含义
- OC-中介找房-代理设计模式
- “Avalon”动画:故事板 (Storyboard) 简介
- 栈的应用实践之括号匹配的检测
- Periodic Strings
- 黑马程序员——Objective-c学习笔记——类(面向对象)——黑马 ios 技术博客
- 深入浅出WPF(7)——数据的绿色通道,Binding(上)
- 读取USB HDD(USB移动硬盘信息)序列号的代码
- TCP/IP、Http、Socket的区别
- 《深入浅出WPF》笔记——绑定篇(一)