Java 什么';共享界面的正确方式是什么?

Java 什么';共享界面的正确方式是什么?,java,modularity,interface-implementation,Java,Modularity,Interface Implementation,如果我有一个依赖于抽象(接口)但不包含此接口的任何实现的项目,该怎么办。因此,我希望将该接口提供给能够实现它的人,以便我(或将使用我的软件的其他人)能够使用他们对我的接口的实现 因此,我有以下问题。比如说,我如何才能共享该界面 我想到的想法是制作一个包含接口的JAR,并将它提供给将在JAR中实现该接口的人。之后,实现接口的人创建了他的JAR并将其提供给我。所以我可以用他的JAR来实现我的接口。这样做是否恰当 它的目的是构建模块化架构,这样,如果我需要一个新游戏(根据上面的示例),我将使用一个带

如果我有一个依赖于抽象(接口)但不包含此接口的任何实现的项目,该怎么办。因此,我希望将该接口提供给能够实现它的人,以便我(或将使用我的软件的其他人)能够使用他们对我的接口的实现

因此,我有以下问题。比如说,我如何才能共享该界面

我想到的想法是制作一个包含接口的JAR,并将它提供给将在JAR中实现该接口的人。之后,实现接口的人创建了他的JAR并将其提供给我。所以我可以用他的JAR来实现我的接口。这样做是否恰当

它的目的是构建模块化架构,这样,如果我需要一个新游戏(根据上面的示例),我将使用一个带有已实现接口的JAR,并将其插入到我的项目中。

是的

您应该有一个只包含接口的共享构建工件(JAR文件),您的项目和实现项目都可以依赖这些接口

您可能希望研究像Maven或Gradle这样的工具,以帮助您协调构建过程中的依赖项。例如,您可能希望将API JAR发布到两个开发人员都可以使用的共享包存储库中


您可能还需要查看
java.util.ServiceLoader
和服务定位器模式,以发现您有哪些可用的特定实现。

似乎您更想“共享”一个抽象类……您应该有一个入口点(可能是
GameEngine
构造函数?)调用方可以将
GameInterface
转换为“正确的方式”是有争议的,但假设它对您有效,您所做的并不是不合理的