两个java库互相导入?

UmN*_*obe 4 java software-design

我正在研究遗留框架,显然有两个库是相互依赖的.我的意思是libA从中导入libB,然后libB从中导入libA.首先我认为这是一个糟糕的设计,但为什么有人会做这样的事情呢?相反,哪些条件可以导致某人写这个?

编辑:

每个库都依赖于另一个库中的类,因此它们会导入包并jar在其构建路径中包含其他库.

duf*_*ymo 7

在这种情况下,这样做更容易,因为双方是独立的.如果他们不相互交谈,那么创建周期并不困难.你必须注意避免它们.

循环依赖不难创建.看看Java本身:java.lang,java.util和java.io有循环.你会不会再写Java了,因为它太"糟糕"了?

这意味着你永远不能在没有libB的情况下使用libA,反之亦然.他们已成为一个大型图书馆.与Java和其他系统中的软件包相同:一旦您有一个循环,您必须将所有这些软件包一起使用,就像它们是一个一样.

家伙谁写春天付出了很多的关注周期.他们设计并重构他们的框架以消除它们.

那么 - 有什么危害?Juergen Heller说他们很糟糕,他是对的.但是从你的角度来看,你遇到了什么邪恶?这意味着您必须在运行和测试时同时使用它们.当它们之间存在循环时,您无法在没有B类的情况下测试A类,反之亦然.它使测试和运行更加困难.

您可以选择没有循环的替代方案.如果您可以更改源,则可以重构和维护它.但就是这样.

你应该检查自己的代码,看看你是否已经完成了自己的代码.IntelliJ具有很好的分析工具,可以应用于代码库.看看这个.