HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    几种常见的代理模式(几种常见的代理模式是什么)

    发布时间:2023-03-30 15:36:43     稿源: 创意岭    阅读: 204        当前文章关键词排名出租

    大家好!今天让创意岭的小编来大家介绍下关于几种常见的代理模式的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,相关业务请拨打电话:175-8598-2043,或添加微信:1454722008

    本文目录:

    几种常见的代理模式(几种常见的代理模式是什么)

    一、产品代理分几种模式

    1.区域指定授权代理:这个片区就只有你一家代理

    2.授权代理:你有销售该产品的资格和厂家的认证,但是不能保证同区域内还有第二第三家

    3.代理又分金牌代理、银牌代理、普通代理,他们之间的差别在进货价和销售区域的差别

    二、Java代理的三种模式有什么?

    Java的三种代理模式简述

    本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇文章中讲述。

    代理模式是什么

    代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展。

    比如有个歌手对象叫Singer,这个对象有一个唱歌方法叫sing()。

    假如你希望,通过你的某种方式生产出来的歌手对象,在唱歌前后还要想观众问好和答谢,也即对目标对象Singer的sing方法进行功能扩展。

    但是往往你又不能直接对源代码进行修改,可能是你希望原来的对象还保持原来的样子,又或许你提供的只是一个可插拔的插件,甚至你有可能都不知道你要对哪个目标对象进行扩展。这时就需要用到java的代理模式了。网上好多用生活中的经理人的例子来解释“代理”,看似通俗易懂,但我觉得不适合程序员去理解。程序员应该从代码的本质入手。

    三、iOS 设计模式(一)-代理模式

    代理模式是一种消息传递方式,一个完整的代理模式包括:委托对象、代理对象和协议。

    协议:用来指定代理双方可以做什么,必须做什么。

    委托对象:根据指定的协议,指定代理去完成什么功能。

    代理对象:根据指定的协议,完成委托方需要实现的功能。

    从上图中可以看到三方之间的关系,在实际应用中通过协议来规定代理双方的行为,协议中的内容一般都是方法列表,当然也可以定义属性。

    协议是公共的定义,如果只是某个类使用,我们常做的就是写在某个类中。如果是多个类都是用同一个协议,建议创建一个Protocol文件,在这个文件中定义协议。遵循的协议可以被继承,例如我们常用的 UITableView ,由于继承自 UIScrollView 的缘故,所以也将 UIScrollViewDelegate 继承了过来,我们可以通过代理方法获取 UITableView 偏移量等状态参数。

    协议只能定义公用的一套接口,类似于一个约束代理双方的作用。但不能提供具体的实现方法,实现方法需要代理对象去实现。协议可以继承其他协议,并且可以继承多个协议,在iOS中对象是不支持多继承的,而协议可以多继承。

    协议有两个修饰符 @optional 和 @required ,创建一个协议如果没有声明,默认是 @required 状态的。这两个修饰符只是约定代理是否强制需要遵守协议,如果 @required 状态的方法代理没有遵守,会报一个黄色的警告,只是起一个约束的作用,没有其他功能。

    无论是 @optional 还是 @required ,在委托方调用代理方法时都需要做一个判断,判断代理是否实现当前方法,否则会导致崩溃。

    在iOS中代理的本质就是代理对象内存的传递和操作,我们在委托类设置代理对象后,实际上只是用一个id类型的指针将代理对象进行了一个弱引用。委托方让代理方执行操作,实际上是在委托类中向这个id类型指针指向的对象发送消息,而这个id类型指针指向的对象,就是代理对象。

    通过上面这张图我们发现,其实委托方的代理属性本质上就是代理对象自身,设置委托代理就是代理属性指针指向代理对象,相当于代理对象只是在委托方中调用自己的方法,如果方法没有实现就会导致崩溃。从崩溃的信息上来看,就可以看出来是代理方没有实现协议中的方法导致的崩溃。

    而协议只是一种语法,是声明委托方中的代理属性可以调用协议中声明的方法,而协议中方法的实现还是有代理方完成,而协议方和委托方都不知道代理方有没有完成,也不需要知道怎么完成。

    由于代理对象使用强引用指针,引用创建的委托方对象,并且成为委托对象的代理。这就会导致委托对象的delegate属性强引用代理对象,导致循环引用的问题,最终两个对象都无法正常释放。

    我们将委托对象的delegate属性,设置为弱引用属性。

    weak 和 assign 是一种“非拥有关系”的指针,通过这两种修饰符修饰的指针变量,都不会改变被引用对象的引用计数。但是在一个对象被释放后, weak 会自动将指针指向 nil ,而 assign 则不会。在iOS中,向 nil 发送消息时不会导致崩溃的,所以 assign 就会导致野指针的错误 unrecognized selector sent to instance 。

    所以我们如果修饰代理属性,还是用 weak 修饰,比较安全。

    四、委托代理关系的模式

    委托代理关系有5种模式:

    (1)委托方与代理方均为单一的个人,如病人为委托人,医生为代理人;

    (2)委托方只有一个,而代理方不止一个,如中央政府为委托人,若干家垄断企业为代理人;

    (3)委托方不止一个,而代理方只有一个,如众多计算机用户为委托人,某个网络接入服务商为代理人;

    (4)委托方与代理方,均有多个,如众多投保人为委托方,多家保险公司为代理方;

    (5)单个的或多个复合的委托方与代理方,可替换位置互为委托、代理的关系,如出版商与作者之间互为委托、代理的关系。

    不管何种模式,代理方掌握委托方不了解的信息,包括市场信息、私人信息等,双方在讨价还价中达成彼此能接受的合同,并在合同约束下行动,展开博奔,取得对策均衡。

    形成均衡需具备两个条件:

    (1)参与约束。代理方履行合同后所获收益不能低于某个预定收益额,委托方给予代理方的收益水平,不能低于同等条件下其他委托人所能给的收益水收益水平,个能做于问等条件下其他委托人所能给的收益水平。

    (2)激励相容。代理方按合同进行活动以其效益最大化为原则,并保证委托方预期收益也能最大化。这两个条件也是委托方设计激励机制的原则。

    以上就是关于几种常见的代理模式相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    网上目标市场营销策略有(网上目标市场营销策略有哪几种)

    海外推广方法(海外推广方法有哪几种)

    买软件有几种销售模式(买软件有几种销售模式怎么选)

    全球直销排行榜

    微信从一个手机到另一个手机