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

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

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

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

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

    本文目錄:

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

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

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

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

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

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

    Java的三種代理模式簡述

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

    代理模式是什么

    代理模式是一種設(shè)計模式,簡單說即是在不改變源碼的情況下,實(shí)現(xiàn)對目標(biāo)對象的功能擴(kuò)展。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    形成均衡需具備兩個條件:

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

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

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


    推薦閱讀:

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

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

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

    全球直銷排行榜

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