我有一个接口 IA 。适配器 B 实现了该接口。 IZ 是由 X , Y 和 Z 类实现的接口。 IA是一个接口,我的应用程序使用该接口与之通信,以使用适配器 B 与X,Y和Z进行通信。 B包含IZ(适配器模式)的实例。现在,从适配器B开始,我想访问X独有的功能,但是由于在适配器中它绑定到接口IZ,我如何才能以 clean 的方式访问此功能?同样,适配器B中IZ的实例是在运行时根据用户的一些手动 Activity 确定的。有什么方法可以使用依赖注入在适配器B中实例化IZ实例(我想避免使用new运算符)?
IA
|
B(具有IZ的实例)
伊兹
/ | \
Y
编辑:X',Y',Z'很有可能会变成图片...所有接口都具有相同的IZ,但Y'可能有一种需要从B访问的方法(可能与X不同) Y'和X的唯一方法都将适应接口IA中的某些通用方法M
我无法控制X,Y和Z或X',Y',Z',除非它们可以实现IZ接口。但是我可以控制IA和B。我基本上使用适配器模式,以便新类可以适应我的接口IA。
最佳答案
如果您的类B
想要访问X
的公共接口中未通过IZ
公开的部分,那么它不再只是IZ
接口的适配器。
在我看来,如果不通过公共接口访问它们,则需要针对不同类型的单独适配器。由于从您的描述中听起来可能存在许多常用功能,因此可以在适配器之间使用继承来避免代码重复。
您可能希望有一个工厂根据所适配对象的类型来创建适配器。还可以根据需要根据用户 Activity ,使用工厂来实例化X
,Y
&c实例以及必要的适配器。