扩展适配器模式

时间:2012-03-12 17:12:18

标签: java oop design-patterns adapter

我有一个界面 IA 。适配器 B 实现该接口。 IZ 是一个由 X Y Z 类实现的界面。 IA是我的应用程序与之交互的接口,使用适配器 B 与X,Y和Z进行通信。 B包含IZ(适配器模式)的实例。现在从适配器B,我想访问X独有的功能,但由于在适配器中它绑定到接口IZ,我如何以干净方式访问此功能?此外,适配器B中的IZ实例是在运行时根据用户的一些手动活动决定的。有没有办法可以使用依赖注入来实例化适配器B中的IZ实例(我想避免使用 new 运算符)?
IA
|
B(有一个IZ的实例)

IZ
/ | \
X Y Z

编辑:很有可能X',Y',Z'可以进入画面...所有具有相同的界面IZ但Y'可能有一个方法(可能与X不同)需要从B访问.Y'和X的独特方法都将适应接口IA中的一些常用方法M

除了可以实现IZ接口之外,我无法控制X,Y和Z或X',Y',Z'。但我控制了IA和B.我使用了适配器模式,因此新类可以适应我的接口IA

1 个答案:

答案 0 :(得分:2)

如果您的班级B想要访问未通过X公开的IZ公共接口的一部分,那么它不再仅仅是{{1}的适配器接口。

对我而言,如果不通过通用接口访问,则需要为不同的类型分别使用适配器。由于您的描述听起来可能存在许多常见功能,因此您可以在适配器之间使用继承来避免代码重复。

您可能希望工厂根据要调整的对象的类型创建适配器。根据用户的活动,工厂还可以用于实例化IZX & c 的实例,以及必要的适配器。