HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    幾種常見的代理模式(幾種常見的代理模式是什么)

    發(fā)布時(shí)間:2023-03-30 15:36:43     稿源: 創(chuàng)意嶺    閱讀: 204        當(dāng)前文章關(guān)鍵詞排名出租

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于幾種常見的代理模式的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,相關(guān)業(yè)務(wù)請(qǐng)撥打電話:175-8598-2043,或添加微信:1454722008

    本文目錄:

    幾種常見的代理模式(幾種常見的代理模式是什么)

    一、產(chǎn)品代理分幾種模式

    1.區(qū)域指定授權(quán)代理:這個(gè)片區(qū)就只有你一家代理

    2.授權(quán)代理:你有銷售該產(chǎn)品的資格和廠家的認(rèn)證,但是不能保證同區(qū)域內(nèi)還有第二第三家

    3.代理又分金牌代理、銀牌代理、普通代理,他們之間的差別在進(jìn)貨價(jià)和銷售區(qū)域的差別

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

    Java的三種代理模式簡(jiǎn)述

    本文著重講述三種代理模式在java代碼中如何寫出,為保證文章的針對(duì)性,暫且不討論底層實(shí)現(xiàn)原理,具體的原理將在下一篇文章中講述。

    代理模式是什么

    代理模式是一種設(shè)計(jì)模式,簡(jiǎn)單說(shuō)即是在不改變?cè)创a的情況下,實(shí)現(xiàn)對(duì)目標(biāo)對(duì)象的功能擴(kuò)展。

    比如有個(gè)歌手對(duì)象叫Singer,這個(gè)對(duì)象有一個(gè)唱歌方法叫sing()。

    假如你希望,通過(guò)你的某種方式生產(chǎn)出來(lái)的歌手對(duì)象,在唱歌前后還要想觀眾問(wèn)好和答謝,也即對(duì)目標(biāo)對(duì)象Singer的sing方法進(jìn)行功能擴(kuò)展。

    但是往往你又不能直接對(duì)源代碼進(jìn)行修改,可能是你希望原來(lái)的對(duì)象還保持原來(lái)的樣子,又或許你提供的只是一個(gè)可插拔的插件,甚至你有可能都不知道你要對(duì)哪個(gè)目標(biāo)對(duì)象進(jìn)行擴(kuò)展。這時(shí)就需要用到j(luò)ava的代理模式了。網(wǎng)上好多用生活中的經(jīng)理人的例子來(lái)解釋“代理”,看似通俗易懂,但我覺得不適合程序員去理解。程序員應(yīng)該從代碼的本質(zhì)入手。

    三、iOS 設(shè)計(jì)模式(一)-代理模式

    代理模式是一種消息傳遞方式,一個(gè)完整的代理模式包括:委托對(duì)象、代理對(duì)象和協(xié)議。

    協(xié)議:用來(lái)指定代理雙方可以做什么,必須做什么。

    委托對(duì)象:根據(jù)指定的協(xié)議,指定代理去完成什么功能。

    代理對(duì)象:根據(jù)指定的協(xié)議,完成委托方需要實(shí)現(xiàn)的功能。

    從上圖中可以看到三方之間的關(guān)系,在實(shí)際應(yīng)用中通過(guò)協(xié)議來(lái)規(guī)定代理雙方的行為,協(xié)議中的內(nèi)容一般都是方法列表,當(dāng)然也可以定義屬性。

    協(xié)議是公共的定義,如果只是某個(gè)類使用,我們常做的就是寫在某個(gè)類中。如果是多個(gè)類都是用同一個(gè)協(xié)議,建議創(chuàng)建一個(gè)Protocol文件,在這個(gè)文件中定義協(xié)議。遵循的協(xié)議可以被繼承,例如我們常用的 UITableView ,由于繼承自 UIScrollView 的緣故,所以也將 UIScrollViewDelegate 繼承了過(guò)來(lái),我們可以通過(guò)代理方法獲取 UITableView 偏移量等狀態(tài)參數(shù)。

    協(xié)議只能定義公用的一套接口,類似于一個(gè)約束代理雙方的作用。但不能提供具體的實(shí)現(xiàn)方法,實(shí)現(xiàn)方法需要代理對(duì)象去實(shí)現(xiàn)。協(xié)議可以繼承其他協(xié)議,并且可以繼承多個(gè)協(xié)議,在iOS中對(duì)象是不支持多繼承的,而協(xié)議可以多繼承。

    協(xié)議有兩個(gè)修飾符 @optional 和 @required ,創(chuàng)建一個(gè)協(xié)議如果沒有聲明,默認(rèn)是 @required 狀態(tài)的。這兩個(gè)修飾符只是約定代理是否強(qiáng)制需要遵守協(xié)議,如果 @required 狀態(tài)的方法代理沒有遵守,會(huì)報(bào)一個(gè)黃色的警告,只是起一個(gè)約束的作用,沒有其他功能。

    無(wú)論是 @optional 還是 @required ,在委托方調(diào)用代理方法時(shí)都需要做一個(gè)判斷,判斷代理是否實(shí)現(xiàn)當(dāng)前方法,否則會(huì)導(dǎo)致崩潰。

    在iOS中代理的本質(zhì)就是代理對(duì)象內(nèi)存的傳遞和操作,我們?cè)谖蓄愒O(shè)置代理對(duì)象后,實(shí)際上只是用一個(gè)id類型的指針將代理對(duì)象進(jìn)行了一個(gè)弱引用。委托方讓代理方執(zhí)行操作,實(shí)際上是在委托類中向這個(gè)id類型指針指向的對(duì)象發(fā)送消息,而這個(gè)id類型指針指向的對(duì)象,就是代理對(duì)象。

    通過(guò)上面這張圖我們發(fā)現(xiàn),其實(shí)委托方的代理屬性本質(zhì)上就是代理對(duì)象自身,設(shè)置委托代理就是代理屬性指針指向代理對(duì)象,相當(dāng)于代理對(duì)象只是在委托方中調(diào)用自己的方法,如果方法沒有實(shí)現(xiàn)就會(huì)導(dǎo)致崩潰。從崩潰的信息上來(lái)看,就可以看出來(lái)是代理方?jīng)]有實(shí)現(xiàn)協(xié)議中的方法導(dǎo)致的崩潰。

    而協(xié)議只是一種語(yǔ)法,是聲明委托方中的代理屬性可以調(diào)用協(xié)議中聲明的方法,而協(xié)議中方法的實(shí)現(xiàn)還是有代理方完成,而協(xié)議方和委托方都不知道代理方有沒有完成,也不需要知道怎么完成。

    由于代理對(duì)象使用強(qiáng)引用指針,引用創(chuàng)建的委托方對(duì)象,并且成為委托對(duì)象的代理。這就會(huì)導(dǎo)致委托對(duì)象的delegate屬性強(qiáng)引用代理對(duì)象,導(dǎo)致循環(huán)引用的問(wèn)題,最終兩個(gè)對(duì)象都無(wú)法正常釋放。

    我們將委托對(duì)象的delegate屬性,設(shè)置為弱引用屬性。

    weak 和 assign 是一種“非擁有關(guān)系”的指針,通過(guò)這兩種修飾符修飾的指針變量,都不會(huì)改變被引用對(duì)象的引用計(jì)數(shù)。但是在一個(gè)對(duì)象被釋放后, weak 會(huì)自動(dòng)將指針指向 nil ,而 assign 則不會(huì)。在iOS中,向 nil 發(fā)送消息時(shí)不會(huì)導(dǎo)致崩潰的,所以 assign 就會(huì)導(dǎo)致野指針的錯(cuò)誤 unrecognized selector sent to instance 。

    所以我們?nèi)绻揎棿韺傩裕€是用 weak 修飾,比較安全。

    四、委托代理關(guān)系的模式

    委托代理關(guān)系有5種模式:

    (1)委托方與代理方均為單一的個(gè)人,如病人為委托人,醫(yī)生為代理人;

    (2)委托方只有一個(gè),而代理方不止一個(gè),如中央政府為委托人,若干家壟斷企業(yè)為代理人;

    (3)委托方不止一個(gè),而代理方只有一個(gè),如眾多計(jì)算機(jī)用戶為委托人,某個(gè)網(wǎng)絡(luò)接入服務(wù)商為代理人;

    (4)委托方與代理方,均有多個(gè),如眾多投保人為委托方,多家保險(xiǎn)公司為代理方;

    (5)單個(gè)的或多個(gè)復(fù)合的委托方與代理方,可替換位置互為委托、代理的關(guān)系,如出版商與作者之間互為委托、代理的關(guān)系。

    不管何種模式,代理方掌握委托方不了解的信息,包括市場(chǎng)信息、私人信息等,雙方在討價(jià)還價(jià)中達(dá)成彼此能接受的合同,并在合同約束下行動(dòng),展開博奔,取得對(duì)策均衡。

    形成均衡需具備兩個(gè)條件:

    (1)參與約束。代理方履行合同后所獲收益不能低于某個(gè)預(yù)定收益額,委托方給予代理方的收益水平,不能低于同等條件下其他委托人所能給的收益水收益水平,個(gè)能做于問(wèn)等條件下其他委托人所能給的收益水平。

    (2)激勵(lì)相容。代理方按合同進(jìn)行活動(dòng)以其效益最大化為原則,并保證委托方預(yù)期收益也能最大化。這兩個(gè)條件也是委托方設(shè)計(jì)激勵(lì)機(jī)制的原則。

    以上就是關(guān)于幾種常見的代理模式相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    網(wǎng)上目標(biāo)市場(chǎng)營(yíng)銷策略有(網(wǎng)上目標(biāo)市場(chǎng)營(yíng)銷策略有哪幾種)

    海外推廣方法(海外推廣方法有哪幾種)

    買軟件有幾種銷售模式(買軟件有幾種銷售模式怎么選)

    全球直銷排行榜

    微信從一個(gè)手機(jī)到另一個(gè)手機(jī)