2013-05-31 69 views
0

當適配器的方法除名稱外看起來相同時,如何構建適配器已經非常清楚。具有不同接口的C++適配器,其中接口可能具有不同類型/數量的輸入參數

例如,

http://sourcemaking.com/design_patterns/adapter/cpp/2

其中無 「doThis」, 「找時間做」,以及 「doOther」 具有輸入。但是,如果不同的方法具有不同數量的輸入參數會怎樣?

感謝

+0

然後你的適配器需要傳遞一些參數...... –

回答

1

鏈接的文檔中給出的例子描述的情況下的變化是純語法一個使用適配器模式。您的問題所暗示的情況包含語義更改,即適配器方法不提供與適配器接口「承諾」正式提供的服務完全相同的服務。這意味着適配器必須以某種方式包裝,而不僅僅是簡單的名稱更改:必須在其周圍進行一些工作來構建缺少的參數或將現有參數轉換爲適配器所需的參數。

如果每個新適配器都有不同的要求,則每個適配器都必須包含ad-hoc適配代碼。在這種情況下,沒有什麼辦法可以將常見模式分解出來。唯一簡單的例子是簡單的例子,當所有需要的參數獨立於傳遞的參數時,並且可以在構造適配器之前爲所有參數計算一次,因此允許適配器作爲簡單的std::bind等價物。

相關問題