代理模式

概念

代理模式: 為其他對象提供一種代理以控制對這個對象的訪問

代理模式用于延遲處理操作或者在進(jìn)行實(shí)際操作前,先進(jìn)行其它處理

具體實(shí)現(xiàn):

  1. 定義一個Subject接口, 接口定義了一些方法
  2. 定義一個真實(shí)要隱藏的接口實(shí)現(xiàn)者
  3. 定義一個代理實(shí)現(xiàn)者悯仙, 代理接口包含真實(shí)實(shí)現(xiàn)者, 調(diào)用代理接口赎瑰, 可以在代理接口函數(shù)調(diào)用到真實(shí)接口。

模式的場景和優(yōu)缺點(diǎn)

使用場景

  1. 遠(yuǎn)程代理, 也就是為了一個對象在不同的地址空間提供局部代表破镰, 這樣可以隱藏一個對象存在于不同地址空間的事實(shí)餐曼。
  2. 虛擬代理, 是根據(jù)需要創(chuàng)建開銷很大的對象啤咽。 通過它來存放實(shí)例化需要很長時間的真實(shí)對象晋辆。
  3. 安全代理渠脉, 用來控制真是對象訪問時的權(quán)限宇整。

優(yōu)點(diǎn)

  • 職責(zé)清晰
  • 高擴(kuò)展性
  • 智能化

缺點(diǎn)

  • 由于在客戶端和真實(shí)主題之間增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢
  • 實(shí)現(xiàn)代理模式需要額外的工作芋膘,有些代理模式的實(shí)現(xiàn)非常復(fù)雜

代碼實(shí)現(xiàn)


package main

import "fmt"

// Subject ...
type Subject interface {
    Do() string
}

// RealSubject ...
type RealSubject struct{}

// Do ...
func (RealSubject) Do() string {
    return "real"
}

// Proxy ...
type Proxy struct {
    real RealSubject
}

// Do ...
func (p Proxy) Do() string {
    var res string

    fmt.Println("一些權(quán)限驗(yàn)證工作...")
    // 在調(diào)用真實(shí)對象之前的工作鳞青,檢查緩存霸饲,判斷權(quán)限,實(shí)例化真實(shí)對象等臂拓。
    res += "pre:"

    // 調(diào)用真實(shí)對象
    res += p.real.Do()

    // 調(diào)用之后的操作厚脉,如緩存結(jié)果,對結(jié)果進(jìn)行處理等胶惰。傻工。
    res += ":after"

    return res
}
func main() {

    var sub Subject
    sub = &Proxy{}

    res := sub.Do()

    fmt.Printf("res:%s\n", res)
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市孵滞,隨后出現(xiàn)的幾起案子中捆,更是在濱河造成了極大的恐慌,老刑警劉巖坊饶,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泄伪,死亡現(xiàn)場離奇詭異,居然都是意外死亡匿级,警方通過查閱死者的電腦和手機(jī)蟋滴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痘绎,“玉大人津函,你說我怎么就攤上這事〖虼” “怎么了球散?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長散庶。 經(jīng)常有香客問我蕉堰,道長,這世上最難降的妖魔是什么悲龟? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任屋讶,我火速辦了婚禮,結(jié)果婚禮上须教,老公的妹妹穿的比我還像新娘。我一直安慰自己轻腺,他們只是感情好乐疆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贬养,像睡著了一般挤土。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上误算,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天仰美,我揣著相機(jī)與錄音迷殿,去河邊找鬼。 笑死咖杂,一個胖子當(dāng)著我的面吹牛庆寺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诉字,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼懦尝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了壤圃?” 一聲冷哼從身側(cè)響起导披,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎埃唯,沒想到半個月后撩匕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墨叛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年止毕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漠趁。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡扁凛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闯传,到底是詐尸還是另有隱情谨朝,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布甥绿,位于F島的核電站字币,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏共缕。R本人自食惡果不足惜洗出,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望图谷。 院中可真熱鬧翩活,春花似錦、人聲如沸便贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽承璃。三九已至利耍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背堂竟。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玻佩,地道東北人出嘹。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像咬崔,于是被迫代替她去往敵國和親税稼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容