2011-10-14 47 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