iOS之代理设计模式

本文通过保姆照看baby的具体实例,详细解析了代理设计模式的基本用法。介绍了如何通过定义Baby类和其代理ChidrenNurse类来实现需求,并展示了具体的Objective-C代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理设计模式:其实就是自己的事让其他类去完成。还可用于传值。

下面就以保姆照看baby的例子解析代理的基本用法。

首先创建以讴歌baby类

//
//  Baby.h
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import <Foundation/Foundation.h>
@protocol BabyDelegate<NSObject>
-(void)drinkWater;
-(void)eatFood;
@end
@interface Baby : NSObject
/**
 *  代理为遵守协议的任何对象
 */
@property(nonatomic ,strong)id<BabyDelegate>delegate;
-(void)babyHundry;
-(void)babyWantDrinkWeater;
@end

//
//  Baby.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "Baby.h"

@implementation Baby
-(void)babyHundry{
    NSLog(@"我饿了");
    [self.delegate eatFood];//找代理
}
-(void)babyWantDrinkWeater{
    NSLog(@"我渴了");
    [self.delegate drinkWater];//找代理
}

@end
创建一个保姆类作为婴儿的代理  

//
//  ChidrenNurse.h
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Baby.h"
@interface ChidrenNurse : NSObject<BabyDelegate>

@end

实现文件里面实现协议方法

//
//  ChidrenNurse.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "ChidrenNurse.h"

@implementation ChidrenNurse
<pre name="code" class="objc" style="color: rgb(76, 191, 87); font-size: 24px;">//实现协议方法
-(void)drinkWater{ NSLog(@"喂baby喝水");}


-(void)eatFood{
    NSLog(@"喂宝宝吃饭");
}

@end

让后看ViewController

//
//  ViewController.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "ViewController.h"
#import "Baby.h"
#import "ChidrenNurse.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    Baby *baby = [[Baby alloc] init];
    ChidrenNurse *nurse = [[ChidrenNurse alloc] init];
    //设置baby的代理为nurse
    baby.delegate = nurse;
    [baby babyHundry];
    [baby babyWantDrinkWeater];
    
}

@end





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值