Java:在同一包内存在循环依赖是否是不良实践?

10 浏览
0 Comments

Java:在同一包内存在循环依赖是否是不良实践?

已关闭。此问题是基于意见的。它目前不接受答案。


想改进这个问题? 通过 编辑此贴,更新问题以便使用事实和引用回答。

改进此问题

是否在同一个Java包中的类之间存在循环依赖是个不好的实践吗?

如果不是,我想要一个权威的参考指南,其中说明了这一点。

admin 更改状态以发布 2023年5月24日
0
0 Comments

本质上说,循环依赖本身并不是一个问题。然而,它们指向的紧密耦合问题通常是一个问题。实质上,通过紧密耦合两个类,您承认一个类的更改可能会导致另一个类的更改。如果两个类具有不同的责任,那可能是一个问题-实际上,通过紧密耦合它们,您正在说它们共享其责任,从而违反了单一责任原则。

如果在同一包中的两个类之间存在循环依赖关系,则需要立即回答以下几个问题:

  • 为什么不将它们合并为一个类?

  • 为什么不使一个内部类成为另一个内部类?

  • 为什么不通过巧妙使用接口来解耦它们?

  • 是否有另一种类设计更合理?

你的耦合紧密的类相距越远,这些和其他问题就越紧迫。部分原因在于类与包之间的距离-在相同的工件中的同一包内不太成问题,而在不同包中的同一个工件内就不太成问题。但是,如果类在不同的工件中(即JAR文件)但在同一个包中,则它们不应该紧密耦合-因为这可能导致客户无法独立升级库依赖版本。

关于此主题的“可靠”参考,您可以阅读Bob Martin的书“敏捷软件开发”。

0