【发布时间】:2022-05-11 08:06:15
【问题描述】:
当这些包中的类之间存在使用或导入种类的依赖时,包之间存在循环。
考虑以下示例。假设有 4 个类:org.example.car 包中的Truck 和接口Car 以及org.example.part 包中的Navigation 和CPU。在包org.example.car 和org.example.part 中,类Truck --> Car 和类Navigation --> CPU 之间存在使用关系。假设Truck 类使用Navigation 类,所以我们有数据包org.example.car --> org.example.part 之间的关系。然后假设类CPU也使用Car接口,这给了我们包org.example.part --> org.example.car之间的关系。尽管Navigation 类不使用任何包类org.example.car,但我们在包中的相邻类(CPU 类)上有一个循环。
这个例子如下图所示:
当一个循环中涉及多个包时,这意味着这些包是高度耦合的,如果不导入所有其他包,就无法重用/提取其中一个包。这样的周期可能会迅速增加维护应用程序和适应业务变化所需的工作量。
【问题讨论】:
-
你的问题是什么?我的意思是你同时发送了一个“问题”和一个“答案”。
-
@SubOptimal 我认为主要问题是“如何修复”; “这是什么意思”似乎很好地涵盖了。
-
也许这篇文章至少解释了“这是什么意思”sonarqube.org/…
-
@SubOptimal 这是问答风格的文章,下面提供了答案
标签: java architecture sonarqube circular-dependency