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

时间:2010-07-09 10:26:20

标签: 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下面的东西。

1 个答案:

答案 0 :(得分:4)

在任何情况下,都不建议在包之间建立两种方式的依赖关系。因此,如果您具有从包a.b.c到a.b.c.d的依赖关系,则不应该具有从a.b.c.d到a.b.c的任何依赖关系。这被称为包缠结,其通常表示应用的高耦合和可能破坏的分层。像Sonar这样的工具可以帮助您找到包裹纠缠。

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

如果您的API位于较低级别的软件包中,则应重新组织软件包。