2010-07-09 64 views
0

下级包我的意思是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的东西。在较高级别的包的类中使用较低级别的API的API是一个好主意吗?

+0

我同意你 – 2010-07-09 10:36:12

回答

4

在任何情况下,建议不要使包之间的依赖关系变为双向。所以如果你有a.b.c包到a.b.c.d的依赖关系,你不应该从a.b.c.d到a.b.c有任何依赖关系。这被称为包缠结,这通常表示应用程序的高耦合和可能的分层。像Sonar这样的工具可以帮助您找到包装缠结。

我通常把我的API的接口放在较低级别的包中的更高级的包和实现中。所以参考文献将从较低层次的包到更高层次的包。

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

+0

+1注意到依赖倒置原则 – 2010-07-12 22:54:23

相关问题