首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 代理模式(Proxy Pattern)實戰解析:從教科書定義到 RPC 遠端呼叫真實場景

     編輯:程式設計綜合問答

題主程式碼審視

程式碼結構:

  • Fun 介面(抽象主題)
  • RealFun 真實主題
  • DelegateFun 代理,持有 RealFun* 並在 func() 中轉呼叫並加入日誌

結論:符合代理模式結構,但使用場景不當——針對一個全域函數套用代理屬於「畫蛇添足」。

代理模式真正適用場景:控制存取、增加間接層

經典案例:RPC(遠端程序呼叫)客戶端 Stub

  • 真實 fun() 執行在伺服器,客戶端無法直接呼叫。
  • 客戶端代理 fun():序列化參數 → 發送網路請求 → 等待回應 → 反序列化結果 → 返回。
  • 呼叫端感覺像呼叫本地函數,實則跨越網路。

其他常見場景:虛擬代理(延遲載入大圖片)、保護代理(權限檢查)、快取代理(記憶體/磁碟快取)、智慧指標(引用計數)。

設計原則提醒

「為其他物件提供一種代理以控制對這個物件的存取。在某些情況下,一個物件不適合或不能直接引用另一個物件,而代理物件可以在客戶端和目標物件之間起到中介作用。」

若無「無法直接引用」或「需額外控制」的需求,直接呼叫真實物件即可,別濫用模式。

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