日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代理模式(为对象提供相同的接口)

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代理模式(为对象提供相同的接口) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、代理模式

代理模式,即Proxy,讓你能夠提供對象的替代品或其占位符。 代理控制著對于原對象的訪問, 并允許在將請求提交給對象前后進行一些處理。它和Adapter模式很類似。我們先回顧Adapter模式,它用于把A接口轉換為B接口:

public BAdapter implements B {private A a;public BAdapter(A a) {this.a = a;}public void b() {a.a();} }

而Proxy模式不是把A接口轉換成B接口,它還是轉換成A接口:

public AProxy implements A {private A a;public AProxy(A a) {this.a = a;}public void a() {this.a.a();} }

二、 為什么要使用代理模式控制對于某個對象的訪問呢

為什么要使用代理模式控制對于某個對象的訪問呢? 舉個例子: 有這樣一個消耗大量系統資源的巨型對象, 你只是偶爾需要使用它, 并非總是需要。

代理模式解決的問題

  • 數據庫查詢有可能會非常緩慢。你可以實現延遲初始化: 在實際有需要時再創建該對象。 對象的所有客戶端都要執行延遲初始代碼。 不幸的是, 這很可能會帶來很多重復代碼。

  • 在理想情況下, 我們希望將代碼直接放入對象的類中, 但這并非總是能實現: 比如類可能是第三方封閉庫的一部分。

  • 解決方案
  • 代理模式建議新建一個與原服務對象接口相同的代理類, 然后更新應用以將代理對象傳遞給所有原始對象客戶端。 代理類接收到客戶端請求后會創建實際的服務對象, 并將所有工作委派給它。

  • 代理模式的解決方案
  • 代理將自己偽裝成數據庫對象, 可在客戶端或實際數據庫對象不知情的情況下處理延遲初始化和緩存查詢結果的工作。

    這有什么好處呢? 如果需要在類的主要業務邏輯前后執行一些工作, 你無需修改類就能完成這項工作。 由于代理實現的接口與原類相同, 因此你可將其傳遞給任何一個使用實際服務對象的客戶端。

    三、代理模式的結構


    很重要的一點就是:代理類必須和服務對象實現相同的接口,才能偽裝成服務對象

    四、代碼實現及詳解

    參考

    五、 代理模式適合應用場景

    使用代理模式的方式多種多樣, 我們來看看最常見的幾種。

  • 延遲初始化 (虛擬代理)。 如果你有一個偶爾使用的重量級服務對象, 一直保持該對象運行會消耗系統資源時, 可使用代理模式。

  • 你無需在程序啟動時就創建該對象, 可將對象的初始化延遲到真正有需要的時候。

  • 訪問控制 (保護代理)。 如果你只希望特定客戶端使用服務對象, 這里的對象可以是操作系統中非常重要的部分, 而客戶端則是各種已啟動的程序(包括惡意程序), 此時可使用代理模式。

  • 4.代理可僅在客戶端憑據滿足要求時將請求傳遞給服務對象。

  • 本地執行遠程服務 (遠程代理)。 適用于服務對象位于遠程服務器上的情形。

  • 在這種情形中, 代理通過網絡傳遞客戶端請求, 負責處理所有與網絡相關的復雜細節。

  • 記錄日志請求 (日志記錄代理)。 適用于當你需要保存對于服務對象的請求歷史記錄時。 代理可以在向服務傳遞請求前進行記錄。

  • 緩存請求結果 (緩存代理)。 適用于需要緩存客戶請求結果并對緩存生命周期進行管理時, 特別是當返回結果的體積非常大時。

    • 代理可對重復請求所需的相同結果進行緩存, 還可使用請求參數作為索引緩存的鍵值。
  • 智能引用。可在沒有客戶端使用某個重量級對象時立即銷毀該對象。

  • 代理會將所有獲取了指向服務對象或其結果的客戶端記錄在案。

  • 代理會時不時地遍歷各個客戶端, 檢查它們是否仍在運行。
    如果相應的客戶端列表為空, 代理就會銷毀該服務對象, 釋放底層系統資源。 代理還可以記錄客戶端是否修改了服務對象。 其他客戶端還可以復用未修改的對象。

  • 六、與其他模式的關系

  • 適配器模式能為被封裝對象提供不同的接口, 代理模式能為對象提供相同的接口, 裝飾模式則能為對象提供加強的接口。

  • 外觀模式與代理的相似之處在于它們都緩存了一個復雜實體并自行對其進行初始化。 代理與其服務對象遵循同一接口, 使得自己和服務對象可以互換,在這一點上它與外觀不同。

  • 裝飾和代理有著相似的結構, 但是其意圖卻非常不同。 這兩個模式的構建都基于組合原則, 也就是說一個對象應該將部分工作委派給另一個對象。兩者之間的不同之處在于代理通常自行管理其服務對象的生命周期, 而裝飾的生成則總是由客戶端進行控制。

  • 參考文章
    參考文章

    總結

    以上是生活随笔為你收集整理的代理模式(为对象提供相同的接口)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产91色 | 长篇乱肉合集乱500小说日本 | 亚洲欧美综合精品久久成人 | 丝袜制服一区 | 天天插天天透 | 一区二区三区四区中文字幕 | 亚洲av无码一区二区乱子伦as | 亚洲国产三区 | 亚洲精品国产片 | 顶级黄色片 | 99在线播放 | 婷婷激情四射 | 日韩成人在线播放 | 解开乳罩喂领导吃奶 | 欧美在线视频播放 | 三级成人网 | 天堂中文在线免费观看 | 欧美网站在线观看 | 奇米影视一区二区三区 | 国产精品视频亚洲 | 蜜臀久久99精品久久久久宅男 | 天天干,天天操 | 国产jjizz一区二区三区视频 | 99热这里只有精品1 亚洲人交配视频 | 成年人的黄色片 | 成人区精品一区二区婷婷 | 好色婷婷| 午夜天堂精品 | 国产精品天美传媒 | 久久婷婷五月综合色国产香蕉 | a视频免费 | 日韩精品免费一区 | 久久综合久久鬼 | 裸体裸乳被免费看视频 | 色桃网 | 40到50岁中老年妇女毛片 | 国内精品久久99人妻无码 | 污污视频在线观看网站 | 日韩福利电影在线 | 亚洲超碰在线观看 | 久久免费一区 | sm久久捆绑调教精品一区 | 欧美日韩高清一区二区 | www.国产高清 | 国产永久精品大片wwwapp | 亚洲一区中文字幕在线观看 | 他趴在我两腿中间添得好爽在线看 | 在线毛片观看 | 成人免费视频国产免费 | 精品色哟哟 | 秋霞成人午夜鲁丝一区二区三区 | 国产日产精品一区二区 | 亚洲AV午夜成人片 | 黄色一几片 | 色屁屁一区二区三区视频 | 亚洲精品电影在线观看 | 中文字幕亚洲图片 | av色成人 | 国产精品久线在线观看 | 老熟妇高潮一区二区高清视频 | av无限看 | 亚洲无码精品在线播放 | 人人妻人人澡人人爽人人精品 | 最新av女优| 无码黑人精品一区二区 | 草女人视频 | 波多在线视频 | 宅男午夜在线 | 97视频在线观看免费高清完整版在线观看 | 精品国产九九九 | 免费在线观看网址 | 亚洲欧美另类自拍 | 欧美黄页在线观看 | 欧美日韩国产二区 | 国产午夜大地久久 | 国产三级精品三级在线观看 | 国产乱码精品一区二区三区不卡 | 青苹果av | 亚洲视频黄 | 青娱乐国产在线视频 | 国产91啪 | 国产另类av | 日本中文字幕二区 | 日韩女优一区二区 | 精品欧美日韩 | 麻豆一区二区在线观看 | 欧美伊人网 | 五月丁香| 午夜影院久久 | 伊人资源| 福利视频一区二区三区 | 青青草草视频 | 亚洲精品系列 | 91久色蝌蚪| av在线网址观看 | 久久无码专区国产精品s | 中文字幕 日韩 欧美 | 久热精品在线观看视频 | 色哟哟国产 |