【发布时间】:2012-03-12 17:12:18
【问题描述】:
我有一个界面IA。适配器 B 实现了该接口。 IZ 是一个由 X、Y 和 Z 类实现的接口。 IA 是我的应用程序使用适配器B 与 X 、 Y 和 Z 进行通信的接口。 B 包含一个 IZ(适配器模式)的实例。现在从适配器 B,我想访问 X 独有的功能,但是由于在适配器中它绑定到接口 IZ,我如何以 clean 方式访问此功能?此外,适配器 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
【问题讨论】:
-
如果适配器 B 是使用 Y 或 Z 的实例而不是 X 创建的,您期望会发生什么?
-
听起来你应该在 IZ 上放置更多成员 - 让 Y 和 Z 通过返回“常量内容”来实现这些成员,并让 X 做它通常应该做的任何事情。
-
X' , Y' , Z' 很有可能会出现在图片中...所有都具有相同的界面,但 Y' 可能有一种方法(可能与 X 不同)是必需的从 B 访问。Y' 和 X 的唯一方法都将适应接口 IA 中的一些常用方法 M
-
对于像这样的点点滴滴的要求,任何人都很难给出有用的答案。我建议您考虑一下您可以就该问题表达的所有内容,然后对其进行编辑。
-
我已经编辑了问题,请注意我无法控制 X、Y 和 Z 或 X'、Y'、Z',除非它们可以实现 IZ 接口。但是我可以控制 IA 和 B。我基本上使用了适配器模式,以便新类可以适应我的接口 IA
标签: java oop design-patterns adapter