無廢話C 設計模式之九 Proxy

2021-04-13 22:54:32 字數 1261 閱讀 3318

意圖

為其他物件提供一種**以控制對這個物件的訪問。

場景

**模式非常常用,大致的思想就是通過為物件加乙個**來降低物件的使用複雜度、或是提公升物件使用的友好度、或是提高物件使用的效率。在現實生活中也有很多**的角色,比如明星的經紀人,他就是一種**,經紀人為明星處理很多對外的事情,目的是為了節省被**物件也就是明星的時間。保險**人幫助投保人辦理保險,目的降低投保的複雜度。

在開發中**模式也因為目的不同效果各不相同。比如,如果我們的**程式是通過.net remoting來訪問帳號服務的。在編寫**的時候可能希望直接引用帳號服務的dll,直接例項化帳號服務的型別以方便除錯。那麼,我們可以引入proxy模式,做乙個帳號服務的**,**只需要直接呼叫**即可。在**內部實現正式和測試環境的切換,以及封裝呼叫.net remoting的工作。

示例**

using system;

using system.collections.generic;

using system.text;

namespace proxyexample }

inte***ce iaccount

class account : iaccount }

class accountproxy : iaccount

public void register() }

} **說明

iaccount就是抽象主題角色。**物件和被**物件都遵循這個介面,這樣**物件就能替換被**物件。

accountproxy就是**主題角色。**主題通常會存在一些邏輯或預處理或後處理操作,不會僅僅是對操作的**。

account就是真實主題角色。

何時採用

**模式應用非常廣泛,如果你希望降低物件的使用複雜度、或是提公升物件使用的友好度、或是提高物件使用的效率都可以考慮**模式。

實現要點

**物件和被**物件都遵循一致的介面。

在某些情況下,可以不必保持介面一致性,如果封裝確實需要損失一些透明度,那麼也可以認為是proxy。

注意事項

proxy、facade以及adapter可能都是對物件的一層封裝,側重點不同。proxy基於一致的介面進行封裝,facade針對封裝子系統,轉化為高層介面,而adapter的封裝是處於適配介面的目的。

(原創)無廢話C 設計模式之九 Proxy

無廢話c 設計模式之九 proxy 意圖 為其他物件提供一種 以控制對這個物件的訪問。場景 模式非常常用,大致的思想就是通過為物件加乙個 來降低物件的使用複雜度 或是提公升物件使用的友好度 或是提高物件使用的效率。在現實生活中也有很多 的角色,比如明星的經紀人,他就是一種 經紀人為明星處理很多對外的...

無廢話C 設計模式之七 Adapter

意圖 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法在一起工作的兩個類能夠在一起工作。場景 一 開始的設計就是,大廳程式是基於介面方式呼叫遊戲程式啟動遊戲場景方法的。在大廳程式開發接近完成的時候,公司決定和另外一家遊戲公司合作,因此希望把大 廳程式能適用另乙個遊戲。而這個新...

無廢話C 設計模式 002

執行結果如下圖 說明 weapon是抽象構件角色。rifle是具體構件角色,實現抽象構件的介面。decorator是裝飾角色。裝飾角色有兩個特點,一是繼承了抽象構件的介面,二是有乙個構件角色的例項。enhance和wear是具體裝飾角色,它們負責給構件附加責任。客戶端在使用裝飾角色的時候並沒有針對抽...