java - Java层分离模块间的循环依赖
问题描述
我正在为学校分配作业,我需要在我的程序中实现层分离。我制作了一款名为 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 在音频模块中。
如果我使用的术语不正确,请告诉我。我还在学习 ;-)
解决方案
我找到了解决方案。module-info.java 已删除,但我仍然收到有关循环依赖的消息。
在 IntelliJ 中,您可以转到Open module settings,在此视图中您可以设置或删除依赖项。 IntelliJ 模块概述
通过这个我发现类 ControlledGameObject 依赖于控制模块。
我认为只能通过 module-info.java 设置依赖关系,但它们也存储在 moduel iml 文件中。
推荐阅读
- node.js - 如何模拟 AWS RDSDataService 方法?
- python - 从具有列表的 CSV 文件中提取,然后循环
- html - 如何在 Algolia 搜索结果中添加图像预览?
- typescript - 如何为 omit() 函数保留通用的特定字符串 [] 类型?
- c# - MVC Web 应用程序在带有子文件夹的区域中找不到视图
- sql - 如何使用“USE”关键字来指定名称中有句点的数据库?
- java - DB2 blob 的第一个字节代表什么?
- unity3d - LoadScene() 之后的 Unity 和照明和渲染无法正常工作
- python - 根据另一列的内容创建一个新列
- machine-learning - ELI5 包为 XGBoost 功能重要性产生所有正权重