有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java干净体系结构:在不同的环境中分离IO和核心。jar文件

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

核心:

  • 核心班。java

  • somedao接口。java

木卫一

  • 有人问我。java(实现SomeDAOInterface)

如果我要把核心和IO分开。jar文件,不同的项目,我应该如何处理IO部分中的“SomeDAOInterface”依赖关系?它只包含在核心部分中,所以如果没有编译器错误(找不到类接口),我无法真正实现它


共 (2) 个答案

  1. # 1 楼答案

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

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

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

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

  2. # 2 楼答案

    如果你从Bob叔叔那里谈论清洁建筑,那么我想知道核心项目是什么

    https://8thlight.com/blog/assets/posts/2012-08-13-the-clean-architecture/CleanArchitecture.jpg

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

    有关清洁体系结构中项目结构的更详细讨论,请参阅我的帖子:https://plainionist.github.io/Implementing-Clean-Architecture-Scream/