设计模式之Protocol实现代理模式(二)

2014-11-23 23:41:28 · 作者: · 浏览: 1
ght (c) 2014年 apple. All rights reserved.
//
#import "Nurse.h"
@implementation Nurse
-(void)cry:(Baby*)baby
{
NSLog(@"哄孩子");
}
-(void)eat:(Baby*)baby
{
NSLog(@"喂孩子");
}
-(void)sleep:(Baby *)baby
{
NSLog(@"哄孩子睡觉");
}
@end
复制代码
3 Baby定义一个实现协议的属性
.h
复制代码
//
// Baby.h
// 01-代理模式
//
// Created by apple on 14-4-2.
// Copyright (c) 2014年 apple. All rights reserved.
//
#import
#import "LookBaby.h"
@class Nurse;
@interface Baby : NSObject
@property (nonatomic, assign) int age;
@property (nonatomic, retain) id loolBaby;
-(void)cry;
-(void)eat;
-(void)sleep;
@end
复制代码
.m
复制代码
//
// Baby.m
// 01-代理模式
//
// Created by apple on 14-4-2.
// Copyright (c) 2014年 apple. All rights reserved.
//
#import "Baby.h"
#import "Nurse.h"
@implementation Baby
-(void)cry
{
NSLog(@"%d is crying", _age);
[_loolBaby cry:self];
}
-(void)eat
{
NSLog(@"%d is hugry", _age);
[_loolBaby eat:self];
}
-(void)sleep
{
NSLog(@"%d is sleep", _age);
[_loolBaby sleep:self];
}
@end
复制代码
4 创建B对象,设置A的delegate属性为B对象
复制代码
//
// main.m
// 01-代理模式3
//
// Created by apple on 14-4-2.
// Copyright (c) 2014年 apple. All rights reserved.
//
#import
#import "Baby.h"
#import "Nurse.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Nurse *nurse = [[Nurse alloc] init];
Baby *baby = [[Baby alloc] init];
baby.loolBaby = nurse;
baby.age = 10;
[baby eat];
}
return 0;
}