我有一个Java项目,想要在某些供应商API的基础上构建。这些API连接到运行该供应商软件的服务器,并执行各种操作。
我有两个不同版本的服务器支持两个不同的API版本。任何对API的更改都只是内部实现。也就是说,在旧版本中可用的类、接口、方法等在新版本中都存在。因此,我编写的代码应该能够编译并与任一API版本一起运行。当使用API连接时,向服务器呈现API版本号可以防止在特定服务器上使用不同版本的API。
1. 在运行时是否有一种切换JAR文件的方式?(类似于C/C++ DLL?) 2. 如果无法在运行时切换API版本,则如何处理问题最为优雅?将代码构建两次(每个API版本构建一次)?
希望我遗漏了什么,但是第二种方法似乎并不理想。以下是一个更具体的例子:
这是我的困境。我希望w1使用旧API构建,而w2使用新API构建,以便它们可以连接到适当的服务器。除了它们所依赖的API之外,它们是相同的(完全相同的代码)。即使它们的代码相同,我是否必须为W1和W2创建两种唯一命名的类类型,以适应不同的API版本?如果我想要与许多API版本进行交互,这似乎很快就会变得笨重。任何建议和评论都非常感谢。 - 新人
我有两个不同版本的服务器支持两个不同的API版本。任何对API的更改都只是内部实现。也就是说,在旧版本中可用的类、接口、方法等在新版本中都存在。因此,我编写的代码应该能够编译并与任一API版本一起运行。当使用API连接时,向服务器呈现API版本号可以防止在特定服务器上使用不同版本的API。
1. 在运行时是否有一种切换JAR文件的方式?(类似于C/C++ DLL?) 2. 如果无法在运行时切换API版本,则如何处理问题最为优雅?将代码构建两次(每个API版本构建一次)?
希望我遗漏了什么,但是第二种方法似乎并不理想。以下是一个更具体的例子:
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版本进行交互,这似乎很快就会变得笨重。任何建议和评论都非常感谢。 - 新人