我有一个界面 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
除了可以实现IZ接口之外,我无法控制X,Y和Z或X',Y',Z'。但我控制了IA和B.我使用了适配器模式,因此新类可以适应我的接口IA
答案 0 :(得分:2)
如果您的班级B
想要访问未通过X
公开的IZ
公共接口的一部分,那么它不再仅仅是{{1}的适配器接口。
对我而言,如果不通过通用接口访问,则需要为不同的类型分别使用适配器。由于您的描述听起来可能存在许多常见功能,因此您可以在适配器之间使用继承来避免代码重复。
您可能希望工厂根据要调整的对象的类型创建适配器。根据用户的活动,工厂还可以用于实例化IZ
,X
& c 的实例,以及必要的适配器。