Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在同一个包中有一个循环依赖关系是一种不好的做法吗?_Java_Oop_Circular Dependency - Fatal编程技术网

Java:在同一个包中有一个循环依赖关系是一种不好的做法吗?

Java:在同一个包中有一个循环依赖关系是一种不好的做法吗?,java,oop,circular-dependency,Java,Oop,Circular Dependency,在同一个Java包中的类之间具有循环依赖性是一种不好的做法吗 如果没有,我希望在某个地方有一个很好的参考指南可以这样说。就其本身而言,循环依赖不是问题。然而,他们指出的——紧密耦合——通常可能是一个问题。本质上,通过紧密耦合两个类,您可以接受其中一个类的更改可能会导致另一个类的更改。如果这两个类有不同的责任,那么这可能是一个问题——实际上,通过将它们紧密耦合,你说它们分担责任,因此违反了规则 如果在同一个包中的两个类之间存在循环依赖关系,那么需要立即回答一些问题: 为什么不把它们合并成一个类呢

在同一个Java包中的类之间具有循环依赖性是一种不好的做法吗


如果没有,我希望在某个地方有一个很好的参考指南可以这样说。

就其本身而言,循环依赖不是问题。然而,他们指出的——紧密耦合——通常可能是一个问题。本质上,通过紧密耦合两个类,您可以接受其中一个类的更改可能会导致另一个类的更改。如果这两个类有不同的责任,那么这可能是一个问题——实际上,通过将它们紧密耦合,你说它们分担责任,因此违反了规则

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

  • 为什么不把它们合并成一个类呢

  • 为什么不让一个成为另一个的内部阶级呢

  • 为什么不通过明智地使用接口将它们解耦呢

  • 有没有其他更合理的课堂设计

你们紧密耦合的课程之间的距离越远,这些问题和其他问题的紧迫性就越大。部分原因在于类在包方面有多接近——在同一工件中的同一个包内比在同一工件中的不同包之间更不重要。但是,如果它们的类位于不同的aritfacts(即jar)中,但在同一个包中,那么它们不应该紧密耦合,因为这可能导致客户端无法独立升级库依赖版本


对于这个主题的“声誉良好”的参考,你可以做得比鲍勃·马丁的书“敏捷软件开发”更差。

如何接受?就像“它会编译吗”?试试看。我的意思是好的/坏的练习。为了避免这种情况,我做了一些重构,一位团队成员告诉我,只要循环依赖项在同一个包中,循环依赖项就可以了。相关: