首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:代理模式完整指南(一)— 核心定義、代理類型與結構圖解

     編輯:關於C語言

代理模式定義

為某物件提供一個代理,由代理控制對原物件的引用。英文 Proxy 或 Surrogate,中文均譯「代理」。

核心場景

客戶端不想/無法直接引用目標物件時,代理在中間起**中介作用**。

按用途分類的代理類型

類型說明
遠程代理不同位址空間物件的本地代表(本機或跨機器)
虛擬代理按需創建資源消耗大的物件
Copy-on-Write虛擬代理變體,延遲複製/克隆
保護代理控制存取權限,不同用戶不同等級
Cache 代理暫存目標操作結果,多客戶端共享
防火牆代理保護目標,阻擋惡意訪問
同步化代理多執行緒安全訪問單一物件
智能引用代理引用時執行額外操作(計數、日志等)

最常見的四類

  1. 虛擬代理
  2. 遠程代理
  3. 智能引用代理
  4. 保護代理

生活範例

  • Achilles 工具:桌面代理伺服器,攔截 HTTP 雙向通訊,可修改請求/回應甚至 SSL 流量
  • Windows 快捷方式:程式的代理,雙擊啟動真實程式

模式結構圖

三大角色

角色職責
抽象主題宣告真實主題與代理共同介面,客戶端面向此介面程式設計
代理主題持有真實主題引用;實作共同介面;控制真實主題創建/銷毀;調用前後執行額外操作
真實主題定義代理所代表的真實物件與核心業務邏輯

關鍵區別

代理**不只是單純轉發**,而是在轉發前後執行額外邏輯(延遲初始化、權限檢查、日志、快取等),這是與單純包裝器的本質區別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved