1111

 常用的設計模式有23種,但是最常見的設計模式卻只有七八種,今天我們就來說說最常見的設計模式之一的代理模式。代理模式的核心思想用一句話概述就是:保護被代理的對象,控制訪問。

  用一句話概述代理模式很簡單,但是實際做起來很多同學可能還是不理解代理模式的應用場景,我們今天就用鄧哥的例子來說說代理模式究竟是怎麼樣的~

  話說鄧哥的四大愛好是抽菸、喝酒、燙頭、浪~鄧哥出名之後,鄧嫂就開始對鄧哥嚴加管教,鄧嫂開始充當起了鄧哥經紀人的角色~

  代理模式很像是經紀人和明星之間的關係,經紀人的重要功能之一就是做一個filter(攔截器),幫助明星擋住外面很多的事情,以達到保護明星的作用。

  我們的代理模式也是這樣,把原本的對象或者接口保護在裏面,不然別人直接訪問到,在訪問之前要經過重重的過濾,以此來達到保護接口的作用。

  這個時候,如果我們想約鄧哥出來玩,鄧嫂就會果斷的拒絕我們~這個消息都不會傳到鄧哥那裏~

  在我們的系統中,有很多比較重要的接口需要進行這樣的保護,比如支付類接口、用戶登錄接口等涉及到錢或者用戶信息相關的敏感接口,除了接口本身需要有良好的防禦能力之外,通常還會有相應的代理來對接口進行保護。

  如果來訪問的請求參數是異常的就直接返回,不用訪問後面的真正接口,從而達到保護接口的目的。

  如果我們問的問題是可以讓鄧哥處理的,鄧嫂就會把消息告訴鄧哥,然後鄧哥再進行處理。

  也就是說,代理模式只是多了一個環節在中間進行傳遞和過濾,但是真正來做操作的還是後面的接口。

  當鄧哥需要和我們帶溝通的時候,鄧哥也需要把事情告訴鄧嫂,然後通過鄧嫂來告訴我們。

  也就是說,當我們調用一個代理的方法的時候,運行結果也是由代理方法來返回給我們的,我們不但在發出請求的時候不會和鄧哥直接溝通,在接收響應的時候也不會直接和鄧哥直接交流。

  這樣一來鄧哥就完全的被鄧嫂包圍(保護)了,代理模式的原則就是這樣,將原接口或者原對象嚴格的保護起來,不讓其與外界進行直接接觸,以控制訪問的方式來對後面的接口和對象進行保護。

  可能有一些同學會覺得代理模式和裝飾模式比較像,都是將一個接口封裝在另一個函數裏面。那麼我們如何來區別什麼情況下是裝飾模式?什麼情況下是代理模式呢?

  這個時候就需要大家記住各個設計模式的關鍵詞了~裝飾模式的關鍵詞是:封裝,擴展。代理模式的關鍵詞是:控制,保護。

  也就是說,裝飾模式主要的目的是把原接口封裝在新的接口裏之後加入新的功能,所以關鍵詞是擴展。但是代理模式的關鍵詞是保護,也就是說代理模式不會對功能進行增益擴充,只是要對接口進行保護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章