【问题标题】:Java layer separation circular dependencies between modulesJava层分离模块间的循环依赖
【发布时间】:2021-01-08 17:04:22
【问题描述】:

我正在为学校分配作业,我需要在我的程序中实现层分离。 我制作了一款名为 Space Invaders 的小游戏。它有效,但是当我尝试将事物分成模块时,我不断在 IntelliJ 中收到消息。

添加对模块业务的依赖会在模块音频和业务之间引入循环依赖

我还尝试将数据访问层与业务层分开。经过几个小时的战斗,我让它工作了。但不得不删除module-info.java。这不是一件好事。 我一定是忽略了什么。为了让它有点视觉化:)

首先从我的层分离开始: 【图层分离图】 [1]:https://i.stack.imgur.com/wT9FC.png

[类图] [2]:https://i.stack.imgur.com/imYI3.png

当然还有代码 :) 这里有点太大了,所以这里是 GIT 的链接。

https://github.com/Koffiemolen/SpaceInvaders.git

我尝试将数据访问 HighscoreStore 和 SoundFactory 分开。 SoundFactory 在音频模块中。

如果我使用的术语不正确,请告诉我。我还在学习 ;-)

【问题讨论】:

标签: java intellij-idea layer


【解决方案1】:

您的循环依赖关系在业务和数据访问之间 - 它们相互依赖,通常您的数据访问和音频不应依赖任何内容,而业务对两者都有依赖。

对JUnit的依赖应该有测试范围。

当我们使用它时,使用 maven 甚至更好的 gradle - 这将是构建项目的酷且可移植的方式。 IDEA 只是抓取这些项目模型并在本地使用它们

【讨论】:

    【解决方案2】:

    我找到了解决方案。 module-info.java 已删除,但我仍然收到有关循环依赖的消息。

    在 IntelliJ 中您可以转到 打开模块设置,在此视图中您可以设置或删除依赖项。 IntelliJ modules overview

    由此我发现 ControlledGameObject 类依赖于控制模块。

    我认为只能通过 module-info.java 设置依赖关系,但它们也存储在模块 iml 文件中。

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2016-08-14
      • 2014-04-28
      • 2018-03-17
      • 2017-10-27
      • 2021-09-18
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多