何为代理模式,代理模式也成委托模式

代理模式顾名思义,就是一个人让另一个个人帮助他做某事

我们下面就用一个代购的故事为大家讲解代理模式

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学习日记]代理模式相关推荐

  1. 设计模式学习之代理模式学习(一)

    设计模式学习之代理模式学习(一) 关于设计模式想必学习过Java语言的人都知道吧,当时对其进行深入学习的的人应该不是很多.在我看来设计方面的知识相比于框架应用配置等知识要有意思的多,并且设计模式的对一 ...

  2. 设计模式学习笔记-代理模式

    1. 概述 为其它对象提供一种代理以控制对这个对象的访问. 解决的问题:如果直接访问对象比较困难,或直接访问会给使用者或系统带来一系列问题.这样对于客户端(调用者)来说,就不需要直接与真实对象进行交互 ...

  3. javascript设计模式学习日记--模板方法模式

    模板方法模式: 把相似的流程抽象出来作为一个父类,来封装好子类的算法框架,然后子类继承这个父类,并且可以重写非公有的方法,来实现自己的业务逻辑. 聚个栗子 泡茶泡咖啡是很好的例子,不同企业的面试流程也 ...

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

    在前一篇文章我们介绍了OC中的协议的概念:http://blog.csdn.net/jiangwei0910410003/article/details/41776015,这篇文章我们就来介绍一下OC ...

  5. swift设计模式学习 - 代理模式

    移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 代理模式 代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象 ...

  6. Spring——AOP学习(静态代理和动态代理模式)

    Spring--AOP学习(静态代理和动态代理模式) 一.代理模式 我们知道学习Spring最重要的两个知识点就是IOC和AOP,AOP的主要思想就是动态代理模式.在了解AOP之前我们必须学习动态代理 ...

  7. 【设计模式】学习笔记16:代理模式之虚拟代理(实现CD封面加载器)

    本文出自   http://blog.csdn.net/shuangde800 在上篇中,我们学习了代理模式,并用Java RMI实现了一个最简单的远程代理. 实际上代理模式并不仅仅应用与远程代理,还 ...

  8. 策略模式、观察者模式、代理模式、装饰模式 应用场景和实现

    有个大神写的很好: 参考:设计模式学习笔记(四:策略模式) 参考:设计模式学习笔记(二:观察者模式) 参考:设计模式学习笔记-代理模式 参考:设计模式--装饰者模式与代理模式(重要) 参考:设计模式- ...

  9. 《设计模式系列》- 代理模式

    有情怀,有干货,微信搜索[三太子敖丙]关注这个有一点点东西的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文 ...

最新文章

  1. 【转载】gdi+ 内存泄漏
  2. 智能算法中终止条件: “最大评估次数” or “最大迭代次数”
  3. 7个杀手级的开源监测工具
  4. 浏览器打开html文件显示中文乱码解决方法
  5. ​EMNLP 2021 | 以对比损失为微调目标,UMass提出更强大的短语表示模型
  6. js 强校验 弱校验_还在手写表单校验逻辑?试试spring validation吧
  7. html Selection
  8. 树的存储结构以及实现代码
  9. 测试软件项目的方法,保证项目测试进度的几个方法
  10. python做abaqus后处理_python进行abaqus后处理的二次开发,我想提取odb文件中的nodeSet,结果总提示Keyerror,请各位大神指教。...
  11. 各省简称 拼音 缩写_省份简称拼音
  12. qca956x flash usb
  13. 一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别,如何选择窗函数
  14. 小米更新显示非官方rom_MIUI官改篇对比分析-极光ROM-台湾W大-星空未来-其他官改官网...
  15. OpenGL二十面体及多次细分成球体
  16. linux 中文ssid 显示,【两招解决网络设置 支持中文SSID】
  17. python 破解验证码之二:OCR tesseract识别验证码
  18. 软件工程面向对象分析
  19. 电脑计算机怎么没有桌面显示,登陆qq后电脑桌面没有显示怎么做
  20. 阿里云国际站实名认证上传材料填写样例(域名持有者为组织)

热门文章

  1. ckc交易什么意思_1379ip0在股市是什么意思,600875东方电气股票,股市交易手续费计算...
  2. 使用机器视觉模式识别屏幕
  3. mysql foreign key_MYSQL外键(Foreign Key)的使用
  4. 嵩天python笔记_Python学习笔记
  5. 【FLink】Flink 1.12 TaskManager 内存结构
  6. 【java】java 关键字: final详解
  7. 【Elasticsearch】bulk default_local reports failures when export documents
  8. 【kafka】利用 InfoSphere Data Replication CDC for Kafka 实现高效数据复制
  9. 【Flink】Flink CEP 案例
  10. 【Flink】Flink开发中遇到的问题及解法