java干净体系结构:在不同的环境中分离IO和核心。jar文件
在清洁建筑中,结构如下所示:
核心:
核心班。java
somedao接口。java
木卫一
- 有人问我。java(实现SomeDAOInterface)
如果我要把核心和IO分开。jar文件,不同的项目,我应该如何处理IO部分中的“SomeDAOInterface”依赖关系?它只包含在核心部分中,所以如果没有编译器错误(找不到类接口),我无法真正实现它
你可以在下面搜索框中键入要查询的问题!
在清洁建筑中,结构如下所示:
核心:
核心班。java
somedao接口。java
木卫一
如果我要把核心和IO分开。jar文件,不同的项目,我应该如何处理IO部分中的“SomeDAOInterface”依赖关系?它只包含在核心部分中,所以如果没有编译器错误(找不到类接口),我无法真正实现它
# 1 楼答案
你所描述的远不是一个不寻常的设计,周围有很多例子。例如,JavaEE声明了许多将由各种容器实现的接口。或者Jdbc还声明了将由数据库引擎实现的接口
根据绑定是在构建时还是在运行时发生,有两种可能的设计
当绑定发生在构建时(例如对于jdbc来说很常见),您必须在构建时有一个可用的实现,例如在项目中声明一个MySQL数据库驱动程序。在您的示例中,这意味着IO项目将依赖于核心项目
当绑定在运行时发生时(例如Java EE),您将使用一个虚拟项目,该项目只包含接口类(
SomeDAOInterface
,在您的示例中)而不包含编译实现,并向构建器声明不在最终jar中链接它,而是在运行时提供。在运行时,您确实在类路径中提供了一个完整的实现,包含接口类(SomeDAOInterface
和实现类(SomeDAOInterfaceImpl
)。您只需要阅读构建系统文档就可以知道如何声明它。 或者,您可以在核心jar中链接虚拟项目,并声明它将在实现一中提供# 2 楼答案
如果你从Bob叔叔那里谈论清洁建筑,那么我想知道核心项目是什么
如果你提到了“实体圈”,那么如果这是你核心业务规则的一部分,那么在那里定义接口就可以了。 然后,您将创建一个从URIO项目(位于框架或接口适配器层)到核心项目的依赖关系,根据依赖关系规则,该依赖关系是正确的
有关清洁体系结构中项目结构的更详细讨论,请参阅我的帖子:https://plainionist.github.io/Implementing-Clean-Architecture-Scream/