基于非引用在Java中更改接口的能力或方法

基于非引用在Java中更改接口的能力或方法,java,jakarta-ee,Java,Jakarta Ee,我希望能够做到以下几点: 假设我有一个叫做通信的接口 然后我有一个名为Core的包,它想要使用通信接口 然后我有两个通信包,一个用于串行通信,一个用于MQ,每个包中都有接口: -iSeries通信扩展了通信 -IRabbitMQCommunication扩展了通信 除了根据配置创建自己的接口工厂之外,是否有一种方法或途径可以让我自动使用iSeries通信,方法是在构建路径中引用该包,而不是RabbitMQ包(基本上是基于我的客户需要的即插即用包) 我只是好奇这里是否有我遗漏的库或设计原则 谢谢,

我希望能够做到以下几点: 假设我有一个叫做通信的接口

然后我有一个名为Core的包,它想要使用通信接口

然后我有两个通信包,一个用于串行通信,一个用于MQ,每个包中都有接口: -iSeries通信扩展了通信 -IRabbitMQCommunication扩展了通信

除了根据配置创建自己的接口工厂之外,是否有一种方法或途径可以让我自动使用iSeries通信,方法是在构建路径中引用该包,而不是RabbitMQ包(基本上是基于我的客户需要的即插即用包)

我只是好奇这里是否有我遗漏的库或设计原则

谢谢,
Dan

您有一个接口
通信
,然后您的类
iSeries通信
IRabbitMQCommunication
实现您的接口

如果我理解得很好,您希望使代码松散耦合

您可以这样编写代码

Communication comm = new ISerialCommunication();
Communication comm = new IRabbitMQCommunication();
在代码中使用comm引用,以便在运行时只需更改ISerial或IRabbit实现。从两者中选择一个。引用
comm
将保持不变,您不必在代码中的其他位置更改引用