java - 在较高级别包的类中使用较低级别包的 API 是个好主意吗?

标签 java oop

较低级别的包是指包 a.b.c.d,较高级别的包是指 a.b.c,并且我已经使用了彼此相关的术语。我不确定是否有定义此类级别的术语。 然而,从面向对象的角度来看,我想知道从 a.b.c.anotherClass.anotherMetod() 调用 a.b.c.d.aClass.aMethod() 是否是一个好主意。在我看来,a.b.c 的设计应该使其不知道 a.b.c.d 包,因为 a.b.c.d 代表 a.b.c 的更具体形式,或者逻辑上低于 a.b.c 的东西。

最佳答案

无论如何,不​​建议使包之间的依赖关系成为双向的。因此,如果您有从包 a.b.c 到 a.b.c.d 的依赖项,那么您不应该有从 a.b.c.d 到 a.b.c 的任何依赖项。这称为包缠结,通常表示应用程序的耦合度高且可能损坏分层。像Sonar这样的工具可以帮助您找到包裹缠结的情况。

我通常将 API 的接口(interface)放在较高级别的包中,将实现放在较低级别的包中。因此引用将从较低级别的包转到较高级别的包。

如果您的 API 驻留在较低级别的包中,您应该重新组织您的包。

关于java - 在较高级别包的类中使用较低级别包的 API 是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211733/

相关文章:

java - 使用 Spring @RestController 处理带 ZonedDateTime 参数的 HTTP GET

java - nmap 无法找到 nmap 服务

java - 适合新手的 Java self 描述数字程序

oop - 面向对象设计的多样性

c# - 策略模式与多态有何不同?

java - 为什么Spring任务调度程序不同时执行任务?

java - 删除使用 FileOutputStream 创建的文件

language-agnostic - 一个类(class)有多少变量太多了?

Python:与 OOP 中的类、属性和方法混淆

python - __init__ 和 self 在 Python 中做了什么?