处理循环依赖

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

提前致谢 !

不总是要避免循环依赖。 我会在大的地方避开它们,但要保持在系统的小角落里。 在大型,即如果数据访问层和J2EE应用程序循环依赖的表示层,我会说这是一件坏事,因为它意味着一切都必须一次性编译,测试是噩梦。 但是,如果列表数据结构及其迭代器类型是循环依赖,则没有问题。

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

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

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

关于循环依赖是否不好的辩论,我建议阅读鲍勃叔叔的固体原则 。

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