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

2021-09-05 17:50:05 字數 2402 閱讀 3230

無廢話c#設計模式之九:proxy

意圖

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

場景

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

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

示例**

usingsystem;

usingsystem.collections.generic;

usingsystem.text;

namespaceproxyexample

}

inte***ceiaccount

classaccount:iaccount

}

classaccountproxy:iaccount

publicvoidregister()

}

}

**執行結果如下圖:

**說明

liaccount

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

laccountproxy

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

laccount

就是真實主題角色。

何時採用

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

實現要點

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

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

注意事項

l

proxy

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

無廢話C 設計模式之九 Proxy

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

(原創)無廢話C 設計模式之八 Facade

無廢話c 設計模式之八 facade 意圖 為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。場景 在乙個為遊戲充值的 中,建立訂單需要與三個外部介面打交道 l使用者系統 根據使用者名稱獲取使用者id 檢視使用者是否已經啟用了遊戲 l卡系...

(原創)無廢話C 設計模式之五 Prototype

無廢話c 設計模式之五 prototype 意圖 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。場景 遊戲場景中的有很多相似的敵人,它們的技能都一樣,但是隨著敵人出現的位置不同,這些人的能力不太一樣。假設,我們現在需要把三個步兵組成一隊,其中還有乙個精英步兵,能力特別高。那麼,你或...