[oc学习日记]代理模式
何为代理模式,代理模式也成委托模式
代理模式顾名思义,就是一个人让另一个个人帮助他做某事
我们下面就用一个代购的故事为大家讲解代理模式
1.首先我们要创建一个协议,该协议具有具体功能(代购的功能)
1 #import <Foundation/Foundation.h> 2 //声明协议 3 @protocol delegate <NSObject> 4 //协议中代购的方法 5 -(void)buy; 6 @end
2.谁可以实现这个功能,就让这个类去遵循这个协议(在这个例子中,代购者可以实现代购功能所以在代购的头文件中遵循这个协议)
1 #import <Foundation/Foundation.h> 2 #import "delegate.h" 3 #import "WantBuy.h" 4 //遵循协议 5 @interface HelpBuy : NSObject<delegate> 6 //接受请求的方法 7 -(void)reservebuy; 8 @end
并且实现协议中的方法
1 #import "HelpBuy.h" 2 3 @implementation HelpBuy 4 //代购者能够实现代购功能 5 -(void)buy 6 { 7 NSLog(@"我是代购我能买"); 8 } 9 //代购者接收到想购买者的请求 10 -(void)reservebuy 11 { 12 WantBuy *wanter = [[WantBuy alloc]init]; 13 wanter.mydel = self; 14 //想购买者发出请求 15 [wanter dementbuy]; 16 } 17 @end
3.睡需要使用该功能(谁有这个需求,在本例中想要购买者需要代购者趣帮助他购买商品,因而他要定义一个协议属性指向代购者)
1 #import <Foundation/Foundation.h> 2 #import "delegate.h" 3 @interface WantBuy : NSObject 4 //想购买者要定义一个协议属性 5 @property (nonatomic,assign)id<delegate> mydel; 6 -(void)dementbuy; 7 @end
想要购买者发出想要购买的请求给代购者,并且实现
1 #import "WantBuy.h" 2 3 @implementation WantBuy 4 -(void)dementbuy 5 { 6 NSLog(@"我想买你帮我买"); 7 //发出购买请求 8 [_mydel buy]; 9 } 10 @end
总的来说:代理模式大致可以分为两种实现方式
1.谁 让 谁 干什么
2.谁 让 我 干什么
转载于:https://www.cnblogs.com/0error/p/4553889.html
[oc学习日记]代理模式相关推荐
- 设计模式学习之代理模式学习(一)
设计模式学习之代理模式学习(一) 关于设计模式想必学习过Java语言的人都知道吧,当时对其进行深入学习的的人应该不是很多.在我看来设计方面的知识相比于框架应用配置等知识要有意思的多,并且设计模式的对一 ...
- 设计模式学习笔记-代理模式
1. 概述 为其它对象提供一种代理以控制对这个对象的访问. 解决的问题:如果直接访问对象比较困难,或直接访问会给使用者或系统带来一系列问题.这样对于客户端(调用者)来说,就不需要直接与真实对象进行交互 ...
- javascript设计模式学习日记--模板方法模式
模板方法模式: 把相似的流程抽象出来作为一个父类,来封装好子类的算法框架,然后子类继承这个父类,并且可以重写非公有的方法,来实现自己的业务逻辑. 聚个栗子 泡茶泡咖啡是很好的例子,不同企业的面试流程也 ...
- OC学习篇之---代理模式
在前一篇文章我们介绍了OC中的协议的概念:http://blog.csdn.net/jiangwei0910410003/article/details/41776015,这篇文章我们就来介绍一下OC ...
- swift设计模式学习 - 代理模式
移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 代理模式 代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象 ...
- Spring——AOP学习(静态代理和动态代理模式)
Spring--AOP学习(静态代理和动态代理模式) 一.代理模式 我们知道学习Spring最重要的两个知识点就是IOC和AOP,AOP的主要思想就是动态代理模式.在了解AOP之前我们必须学习动态代理 ...
- 【设计模式】学习笔记16:代理模式之虚拟代理(实现CD封面加载器)
本文出自 http://blog.csdn.net/shuangde800 在上篇中,我们学习了代理模式,并用Java RMI实现了一个最简单的远程代理. 实际上代理模式并不仅仅应用与远程代理,还 ...
- 策略模式、观察者模式、代理模式、装饰模式 应用场景和实现
有个大神写的很好: 参考:设计模式学习笔记(四:策略模式) 参考:设计模式学习笔记(二:观察者模式) 参考:设计模式学习笔记-代理模式 参考:设计模式--装饰者模式与代理模式(重要) 参考:设计模式- ...
- 《设计模式系列》- 代理模式
有情怀,有干货,微信搜索[三太子敖丙]关注这个有一点点东西的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文 ...
最新文章
- 【转载】gdi+ 内存泄漏
- 智能算法中终止条件: “最大评估次数” or “最大迭代次数”
- 7个杀手级的开源监测工具
- 浏览器打开html文件显示中文乱码解决方法
- ​EMNLP 2021 | 以对比损失为微调目标,UMass提出更强大的短语表示模型
- js 强校验 弱校验_还在手写表单校验逻辑?试试spring validation吧
- html Selection
- 树的存储结构以及实现代码
- 测试软件项目的方法,保证项目测试进度的几个方法
- python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...
- 各省简称 拼音 缩写_省份简称拼音
- qca956x flash usb
- 一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别,如何选择窗函数
- 小米更新显示非官方rom_MIUI官改篇对比分析-极光ROM-台湾W大-星空未来-其他官改官网...
- OpenGL二十面体及多次细分成球体
- linux 中文ssid 显示,【两招解决网络设置 支持中文SSID】
- python 破解验证码之二:OCR tesseract识别验证码
- 软件工程面向对象分析
- 电脑计算机怎么没有桌面显示,登陆qq后电脑桌面没有显示怎么做
- 阿里云国际站实名认证上传材料填写样例(域名持有者为组织)
热门文章
- ckc交易什么意思_1379ip0在股市是什么意思,600875东方电气股票,股市交易手续费计算...
- 使用机器视觉模式识别屏幕
- mysql foreign key_MYSQL外键(Foreign Key)的使用
- 嵩天python笔记_Python学习笔记
- 【FLink】Flink 1.12 TaskManager 内存结构
- 【java】java 关键字: final详解
- 【Elasticsearch】bulk default_local reports failures when export documents
- 【kafka】利用 InfoSphere Data Replication CDC for Kafka 实现高效数据复制
- 【Flink】Flink CEP 案例
- 【Flink】Flink开发中遇到的问题及解法