我有一个要创建的 java 项目,它将建立在一些供应商 API 之上。API 连接到运行所述供应商软件的服务器并执行各种操作。
我有 2 个不同版本的服务器,由 2 个不同的 API 版本支持。对 API 的任何更改仅在内部实现中。IE 旧版本中我可用的类、接口、方法等在新版本中存在。因此,我编写的代码应该使用任一 API 版本编译和运行。使用 API 进行连接时,向服务器提供的 API 中有一个版本号,可防止您在该特定服务器上使用不同版本的 API。
有没有办法在运行时动态切换 JAR 文件?(像 ac/c++ DLL 之类的东西??)
如果无法在运行时切换 API 版本,那么处理该问题的最优雅方法是什么。构建代码 2x(每个 api 版本一个)?
我希望我遗漏了一些东西,但方法 2 似乎并不理想。下面是一个更具体的例子:
package org.myhypotheticalwrapper.analyzer;
import org.myhypothetical.worker;
import org.myhypothetical.comparator;
public class Analyzer {
Worker w1 = new Worker();
Worker w2 = new Worker();
Comparator c = new Comparator(w1.connectAndDoStuff(),w2.connectAndDoStuff());
c.generateReport();
}
这是我的困境。我希望 w1 使用旧 API 构建,w2 使用新 API 构建,以便它们可以连接到适当的服务器。除了它们所在的 API 之外,它们是相同的(相同的代码)。我是否必须为 W1 和 W2 创建两个唯一命名的类类型,即使它们的代码相同,只是为了适应不同的 API 版本?如果我有许多想要与之交互的 API 版本,这似乎会很快变得笨拙。
非常感谢任何建议和意见。
-新人