我有一个接口IA。适配器B实现了该接口。IZ是一个由X、Y和Z类实现的接口。IA是我的应用程序使用适配器B与X、Y和Z进行通信的接口。B包含一个IZ (Adapter模式)的实例。现在从适配器B中,我想访问X特有的功能,但是由于在适配器中它绑定到接口IZ,我如何以干净的方式访问这个功能?另外,适配器B中的IZ实例也是根据用户的一些手动活动在运行时确定的。是否有任何方法可以使用依赖注入来实例化适配器B中的IZ实例(我希望避免使用新的运算符)?
[医]
|
B(有IZ的实例)
伊兹
//\
X-Y-Z
编辑: X‘,Y’,Z‘进入picture...all具有相同的接口IZ,但Y’可能有一个方法(可能与X不相同)需要从B访问。
我不能控制X,Y和Z或X',Y',Z‘,除了它们可以实现IZ接口之外。但是我控制了IA和B。我基本上使用了适配器模式,以便新的类能够适应我的接口IA。
发布于 2012-04-07 13:01:51
如果您的类B想要访问不通过IZ公开的X公共接口的一部分,那么它不再只是IZ接口的适配器。
在我看来,如果没有通过公共接口访问不同类型的适配器,它们就需要单独的适配器。因为从您的描述中听起来可能有很多常见的功能,所以您可以使用适配器之间的继承来避免代码重复。
您可能需要一个工厂,用于根据所适应对象的类型创建适配器。工厂还可用于根据需要根据用户活动实例化X、Y &c的实例和必要的适配器。
https://stackoverflow.com/questions/9671593
复制相似问题