2011-10-14 64 views
6

在GoF的書籍設計模式(Eric Gamma等人)中,提到了用於透明度的雙向適配器模式。當2個不同的客戶想要以不同的方式查看同一對象時,它們非常有用有人可以給出一個相同的C++示例,並且可以在哪些實際場景中使用?什麼是雙向適配器模式

+0

這是功課? –

+0

:)不,不是。這不是一項家庭作業,我準備面試,雖然我瞭解適配器模式,但我並不瞭解雙向適配器的使用方法。我提到了C++,因爲本書中的例子都在我不知道的Smalltalk中。 – Priyanka

+0

但本書中的示例全部使用C++或Smalltalk。爲什麼不看看GoF給出的代碼?還是在Smalltalk中給出的那個?對不起,我沒有我的文字在這裏檢查。 – duffymo

回答

0

由於Go4對我進行了解釋(第143頁),它是Adapter對多重繼承的擴展。適配器類不是擴展一種接口類型,而是擴展了兩種。

2

我發現here的解釋很不錯。這是一個C#示例,但解釋清楚,並且該示例可以很容易地轉換爲C++代碼。這個例子也很詳細。

+1

好的,所以雙向適配器和經典類適配器之間的唯一區別是:1)經典類適配器可以通過單獨的Itarget /客戶端接口訪問2)雙向適配器可以通過Itarget /類接口以及適配器接口 – Priyanka

1

雙向適配器是實現Target和Adaptee接口的適配器。經過調整的對象可用作處理Target類的新系統中的Target或作爲處理Adaptee類的其他系統中的Adaptee。進一步思考這一思路,我們可以讓適配器實現n個接口,並適應n個系統。在不支持多繼承的系統中,雙向適配器和n路適配器很難實現。如果適配器必須擴展Target類,則不能擴展Adaptee等其他類,因此Adaptee應該是一個接口,所有調用都應該從適配器委派給Adaptee對象。

Adapter Design Pattern

來源:http://www.oodesign.com/adapter-pattern.html