用协议实现代理模式

委托方要遵守代理,就要继承代理,并且要实现代理

/*1. 老板不定期的组织活动,每次都让小明统计参加活动的人数,小明每次将参加活动的人数上报给老板,
 老板很高兴。*/

//main

/*1. 老板不定期的组织活动,每次都让小明统计参加活动的人数,小明每次将参加活动的人数上报给老板,
 老板很高兴。*/

#import <Foundation/Foundation.h>
#import "Boss.h"
#import "XiaoWang.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        XiaoWang *wang = [XiaoWang new];
        Boss *boss = [Boss new];
        
        boss.delegate = wang;
        wang.agent = boss;
        
        [boss asknum];
    }
    return 0;
}
//CountNum.h

//  CountNum.h
//  homework
//
//  Created by hehe on 15/9/7.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import <Foundation/Foundation.h>

@protocol CountNum <NSObject>
- (void)cntnum:(int)i;
@end
//Boss.h

//
//  Boss.h
//  homework
//
//  Created by hehe on 15/9/7.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "CountNum.h"
#import "XiaoWang.h"

@interface Boss : NSObject<CountNum>

@property (nonatomic,strong) XiaoWang * delegate;
- (void)asknum;

@end
//Boss.m

//
//  Boss.m
//  homework
//
//  Created by hehe on 15/9/7.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import "Boss.h"

@implementation Boss

- (void)cntnum:(int)i
{
    NSLog(@"人数是:%d老板很高兴...",i);
}

- (void)asknum
{
    NSLog(@"老板问人帮他干活...");
    [self.delegate dowork];
}
@end
//XiaoWang.h

//
//  XiaoWang.h
//  homework
//
//  Created by hehe on 15/9/7.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "CountNum.h"

@interface XiaoWang : NSObject
@property (weak) id <CountNum> agent;
- (void)dowork;
@end
//XiaoWang.m

//
//  XiaoWang.m
//  homework
//
//  Created by hehe on 15/9/7.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import "XiaoWang.h"

@implementation XiaoWang
- (void)dowork
{
    NSLog(@"小王开始帮老板干活..");
    NSLog(@"小王干完活了");
    [self.agent cntnum:20];
   
}
@end

时间: 2024-10-09 20:53:47

用协议实现代理模式的相关文章

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

简单的协议应用-代理模式

协议(protocol): <> 遵守某个协议,只要遵守了这个协议,相当于拥有协议里面的所有方法声明 声明一系列方法 编译器不强求实现协议里所有的方法 分类和协议都只能声明方法,不能声明成员变量 NSObject是基协议 假设一个人要买票,但是他没有空,需要一个代理去帮他问问票价多少啊,还有几张票啊~ 协议TicketDelegate.h,这里指代理所需要拥有的方法. // // TicketDelegate.h // 协议的应用-代理模式 // // Created by Mekor on

C++模拟实现Objective-C协议和代理模式

Objective-C的协议和代理是运用最多的特性之一,可以说在苹果系列开发中无处不在.事实上很多人都不知道其背后的原理.事实上简单点说,这就是设计模式中的代理模式的经典运用.代理模式简单点说就是为其他对象提供一种代理以控制对这个对象的访问,而在OC当中形象点说就是如果A完成一件事,但是自己不能完成,于是他找个代理人B 替他完成这个事情,他们之间便有个协议 (protocol),B继承该协议来完成A代理给他的事情. 举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保

swift详解之十一------------协议、委托(代理)模式

协议.委托(代理)模式 注:本小节总结协议以及依靠协议实现委托,这将在以后经常被使用.是一个非常重要的模块 看下官方的定义:协议定义了一个蓝图 , 规定了用来实现某一特定工作或者功能所必须的方法和属性,类.结构体.或者枚举类型都可以遵循协议, 并提供具体实现来完成协议定义的方法和功能 . 任意能够满足协议要求的类型都被成为遵循了这个协议 1.协议的语法 协议的关键字:protocol 协议的语法: protocol Pro1{ //这里定义属性或者方法 } 要使一个类或者结构体遵循某个协议 ,

协议的应用-代理模式

// //  main.m //  07-协议的应用-代理模式 // //  Created by apple on 13-6-30. //  Copyright (c) 2013年 apple. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Agent.h" #import "NextAgent.h" int

【OC学习-22】协议和代理双剑合璧——中介找房的代理模式

(1)什么是协议 协议其实是一种接口,创建出来给类(类1)调用,而其他类(类2)可以通过这个协议可以和类1进行通信.所以说它类似于一种接口,实现类和类之间的互动. (2)创建协议 通过New File >>> Objective-C protocol创建.只生成一个.h文件.在这个.h文件里面写方法,分两种@required和@optional,一个是必须实现的方法,另一个是可选实现的方法,默认是required,这种分类方法类似于实例变量的分类. #import <Foundat

iOS基础——浅谈个人对协议、代理的理解

阅读前的知识储备 请确保在阅读本文时,曾经不止一次亲自动手敲过有关代理模式的代码.如果没有,请在积累一定的经验后阅读,相信会更有收获.也希望大神不吝指教. 什么时候要用协议和代理? 下面举一个例子,谈谈个人对代理.协议的理解,希望能够起到抛砖引玉的效果. 假设现在有这么一个任务需求:页面A需要跳转到页面B(有可能会传入一些参数),页面B填写或者处理一些信息在跳转回页面A的同时还需要把数据返回A. 不要为了用代理模式而用代理模式 代理模式只是一种设计模式,它的价值在于通过一个统一的模式,解决一个原

OC学习篇之---代理模式

在前一篇文章我们介绍了OC中的协议的概念:http://blog.csdn.net/jiangwei0910410003/article/details/41776015,这篇文章我们就来介绍一下OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的. 这里举一个简单的例子: 小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play 这里代理对象就是:护士类.保姆类,小孩类是被代理对象. 看一下代码: 首先看一

蓝懿IOS委托模式代理模式

今天刘国斌老师讲了有关oc语言里的委托模式(代理模式),通过了一个打地鼠的游戏讲解了委托模式的功能作用,之后连带讲解了协议的书写和使用. 打地鼠功能包括屏幕随机出现地鼠,点击消失,如果不点击5秒后自动消失,屏幕右上角有一个label显示点击的数量:编写思维是,首先在文件里粗昂见一个类,在类里重写init方法,加上每.5秒出现的事件,倒入viewcontroler文件,在地鼠类里声明一个属性delegate,在button点击事件加上创建对象点delegate调用viewcontroler里的加分