代理

作者: Dayu大鱼 | 来源:发表于2016-09-27 09:56 被阅读41次

代理

概念:
一种通用的设计模式,在iOS中对代理设计模式支持的很好,有特定的语法来实现代理模式,OC语言可以通过@Protocol实现协议。

使用:
iOS中一种消息传递的方式,可以通过这种方式来传递一些参数 .


1664979-1427879215fc20a2.png
代理的三部分组成:

协议: 指定双方(代理方,委托方)必须做什么❓

代理: 实现 委托方需要的帮助 😊 (根据指定的协议)

委托: 告诉代理我需要哪些帮助😜 (根据指定的协议)

所以这里,双方都需要遵守协议

协议 Protocol:

如上图 , 可知道三方之间的关系 , 在实际应用中通过协议来规定代理双方的行为 ; 协议中的内容一般都是 方法列表 ,当然也可以定义 属性 ; 协议的定义( 即书写的方式) 可以是在某一个类里面 , 也可以是单独拿出来作为一个单独的文件 (当多个类使用该协议的时候) ; 就像 UITableView 那样 从 UIScrollView 那继承 过来代理方法: 可以获取 UITableView 偏移量等状态参数 ; 协议只能作为一套公用的接口而存在 , 起到约束代理方和委托方的作用 , 不能实现具体方法 , 只能交给代理方实现(在委托方具体情况下传过来需要实现的消息 ) ; 并且 协议可以多继承--继承其他多个协议 (对象不可以)

注意:
在委托方调用代理方法时都需要做一个判断,判断代理是否实现当前方法,否则会导致崩溃。

制定协议: 

@protocol LoginProtocol

- (void)userLoginWithUsername:(NSString *)username password:(NSString *)password;

@end


委托方调用代理方法时需要做个判断:

if ( [ self.delegate responseToSelector : @selector ( userLoginWithUsername: password: ) ] ) {

        [    self.delegate userLoginWithUsername: self.username.text password: self.password.text  ] ;

}

实际生活中的例子去理解这个概念:

示例:假设我在公司正在敲代码,敲的正开心呢,突然口渴了,想喝一瓶红茶。这时我就可以拿起手机去外卖app上定一个红茶,然后外卖app就会下单给店铺并让店铺给我送过来。

这个过程中,外卖app就是我的代理,我就是委托方,我买了一瓶红茶并付给外卖app钱,这就是购买协议。我只需要从外卖app上购买就可以,具体的操作都由外卖app去处理,我只需要最后接收这瓶红茶就可以。我付的钱就是参数,最后送过来的红茶就是处理结果。

但是我买红茶的同时,我还想吃一份必胜客披萨,我需要另外向必胜客app去订餐,上面的外卖app并没有这个功能。我又向必胜客购买了一份披萨,必胜客当做我的代理去为我做这份披萨,并最后送到我手里。这就是多个代理对象,我就是委托方。

更深一点的知识关于代理 可以点击下 原文链接🔗

参考原文: iOS中的代理设计模式

相关文章

  • 正向代理和反向代理(通俗易懂)

    正向代理:代理端代理的是客户端。反向代理:代理端代理的是服务端。 常用案例 正向代理:如VPN代理客户端 反向代理...

  • 编程常用的设计模式

    动态代理和静态代理 静态代理 动态代理 静态代理与动态代理的区别 JDK中的动态代理和CGLIB 实现动态代理的方...

  • JAVA动态代理的实现方式

    1. 静态代理VS动态代理 代理类可以增强被代理对象的方法。可分为静态代理和动态代理。 1.1 静态代理 静态代理...

  • 面试系列~动态代理实现与原理

    动态代理有JDK动态代理, CGLIB动态代理, SpringAOP动态代理 一,JDK动态代理  jdk动态代理...

  • Nginx作为代理服务

    一、代理服务代理-代为办理(代理理财、代理收货等等) 1.1正向代理 1.2反向代理 1.3代理区别 1.4配置语...

  • Spring之代理模式

    九、代理模式 目录:静态代理、动态代理AOP的底层机制就是动态代理。代理模式分为静态代理和动态代理。接触aop之前...

  • Spring的AOP原理分析

    一 动态代理 动态代理分为JDK动态代理和CGLIB动态代理 jdk动态代理 被代理类(目标类)和代理类必须实现同...

  • 静态代理、动态代理

    代理分为静态代理和动态代理 按照代理创建的时期,可以分为静态代理和动态代理: (1) 静态代理:由程序员或者...

  • Java 代理的实现原理

    一、怎样使用代理 二、代理实现的原理 一、代理分为静态代理和动态代理 静态代理:代理对象获得目标对象的引用 动态代...

  • spring aop

    JDK动态代理和CGLib代理 JDK的代理代理类 被代理接口 被代理实现类 启动类: jdk的动态代理是针对接口...

网友评论

    本文标题:代理

    本文链接:https://www.haomeiwen.com/subject/iojcyttx.html