Java 干净的体系结构:在不同的.jar文件中分离IO和Core

Java 干净的体系结构:在不同的.jar文件中分离IO和Core,java,clean-architecture,Java,Clean Architecture,在清洁建筑中,结构如下所示: 核心: CoreClass.java SomeDAOInterface.java 木卫一 java实现SomeDAOInterface 如果我应该在不同的.jar文件、不同的项目中拆分内核和IO,那么我应该如何处理IO部分中的某些DAO接口依赖关系?它只包含在核心部分中,因此如果没有编译器错误,我无法真正实现它。找不到任何类接口。如果你从Bob叔叔那里谈论干净的体系结构,那么我想知道核心项目是什么 如果你提到实体圈,那么定义接口就可以了,如果这真的是你核心业务规则的

在清洁建筑中,结构如下所示:

核心:

CoreClass.java

SomeDAOInterface.java

木卫一

java实现SomeDAOInterface
如果我应该在不同的.jar文件、不同的项目中拆分内核和IO,那么我应该如何处理IO部分中的某些DAO接口依赖关系?它只包含在核心部分中,因此如果没有编译器错误,我无法真正实现它。找不到任何类接口。

如果你从Bob叔叔那里谈论干净的体系结构,那么我想知道核心项目是什么

如果你提到实体圈,那么定义接口就可以了,如果这真的是你核心业务规则的一部分的话。 然后,您将创建一个从框架或接口适配器层中的URIO项目到核心项目的依赖关系,根据依赖关系规则,该项目是正确的


有关Clean Architecture中项目结构的更详细讨论,请参阅我的帖子:

您所描述的远远不是一个不同寻常的设计,并且有很多例子。例如,JavaEE声明了许多将由各种容器实现的接口。或者Jdbc还声明了将由数据库引擎实现的接口

根据绑定是在构建时还是在运行时发生,有两种可能的设计

例如,当绑定发生在jdbc通用的构建时,您必须在构建时有一个可用的实现,例如在项目中声明一个MySQL数据库驱动程序。在您的示例中,这意味着IO项目将依赖于核心项目

例如,当绑定发生在运行时JavaEE时,您使用一个虚拟项目,该项目只包含示例中的接口类SomeDAOInterface,而不包含编译实现,并向构建器声明不在最终jar中链接它,而是在运行时提供它。在运行时,您确实在类路径中提供了一个完整的实现,其中包含示例中的接口类SomeDAOInterface和实现类SomeDAOInterfaceImpl。您只需要阅读构建系统文档就可以知道如何声明它。
或者,您可以将虚拟项目链接到core jar中,并声明它将在实现一中提供。

将这些接口移动到一个公共库中,供您的core和IO模块使用。。。