gpt4 book ai didi

java - 扩展适配器模式

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:30 25 4
gpt4 key购买 nike

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

|
B(有一个 IZ 的实例)

伊兹
/|\
XYZ

编辑:X' 、 Y' 、 Z' 很有可能出现...都具有相同的接口(interface) IZ 但 Y' 可能有一种方法(可能与 X 不同)是必需的从B访问。Y'和X的特有方法都会适配接口(interface)IA中的一些通用方法M

我无法控制 X、Y 和 Z 或 X'、Y'、Z',除非它们可以实现 IZ 接口(interface)。但是我可以控制 IA 和 B。我本质上使用了适配器模式,以便新类可以适应我的接口(interface) IA

最佳答案

如果您的类 B 想要访问未通过 IZ 公开的 X 公共(public)接口(interface)的一部分,那么它不是不再只是 IZ 接口(interface)的适配器。

在我看来,如果不通过公共(public)接口(interface)访问不同的类型,您就需要单独的适配器。由于根据您的描述听起来可能有很多通用功能,因此您可以在适配器之间使用继承来避免代码重复。

您可能需要一个工厂来根据被适配对象的类型创建适配器。工厂还可以用于实例化 XY &c 的实例,以及它的必要适配器,根据需要的用户 Activity .

关于java - 扩展适配器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9671593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com