11

我想知道是否有人可以建议任何好的方法来打破 Java 中 2 个类之间的循环依赖关系。FindBugs 建议使用接口,所以我想知道是否有人对这类问题有任何好的经验。

4

3 回答 3

7

并非总是要避免循环依赖。我会在大范围内避免它们,但会在系统的小角落里。在大的情况下,即如果数据访问层和J2EE 应用程序的表示层循环依赖,我会说这是一件坏事,因为这意味着必须一次性编译所有内容,而测试是一场噩梦。但是,如果一个列表数据结构和它的迭代器类型是循环依赖的,那就没问题了。

正如 Findbugs 建议的那样,使用接口来打破循环依赖。即为至少一种类型的圆引入一个接口,并使其他类在任何地方都使用该接口。您需要示例代码吗?

于 2011-04-03T11:02:58.677 回答
6

建议阅读依赖倒置原则,例如什么是依赖倒置原则,为什么它很重要?http://en.wikipedia.org/wiki/Dependency_inversion_principle

于 2011-03-31T11:56:57.557 回答
4

这里有一篇关于如何使用 Restructure101 从 Junit 中删除循环依赖项“缠结”的博客文章,以及来自洛桑 JUG 的关于如何使用它从 Icefaces 中删除缠结的演示文稿

至于循环依赖是否不好的争论,我建议阅读鲍勃大叔的Solid Principles

免责声明:我为 Restructure101 的开发人员 Headway Software 工作。

于 2011-04-03T10:40:33.727 回答