一、背景
在某些情況下,一個客戶不想或者不能直接引用一個對 象,此時可以通過一個稱之爲“代理”的第三者來實現 間接引用。代理對象可以在客戶端和目標對象之間起到 中介的作用,並且可以通過代理對象去掉客戶不能看到 的內容和服務或者添加客戶需要的額外服務。
通過引入一個新的對象(如小圖片和遠程代理 對象)來實現對真實對象的操作或者將新的對 象作爲真實對象的一個替身,這種實現機制即 爲代理模式,通過引入代理對象來間接訪問一 個對象,這就是代理模式的模式動機。
二、模式定義
代理模式(Proxy Pattern) :給某一個對象提供一個代 理,並由代理對象控制對原對象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一種對象結構型模式。
三、模式結構
代理模式包含如下角色:
Subject: 抽象主題角色
Proxy: 代理主題角色
RealSubject: 真實主題角色
代理模式結構類圖如下:
其調用時序如下:
四、應用實例
// demo 代碼
五、使用場景
六、優缺點
1. 代理模式的優點
- 代理模式能夠協調調用者和被調用者,在一定程度上降低了系 統的耦合度。
- 遠程代理使得客戶端可以訪問在遠程機器上的對象,遠程機器 可能具有更好的計算性能與處理速度,可以快速響應並處理客戶端請求。
- 虛擬代理通過使用一個小對象來代表一個大對象,可以減少系 統資源的消耗,對系統進行優化並提高運行速度。
- 保護代理可以控制對真實對象的使用權限。
2. 代理模式的缺點
- 由於在客戶端和真實主題之間增加了代理對象,因此 有些類型的代理模式可能會造成請求的處理速度變慢。
- 實現代理模式需要額外的工作,有些代理模式的實現 非常複雜。
-