什么时候一个类/包依赖于另一个?

Dav*_*Far 7 architecture oop dependencies

许多文章/书籍....谈论阶级或包依赖,很少解释它是什么.我确实找到了一些定义,但它们各不相同,可能并未涵盖所有情况.例如:

要考虑的其他方面是方法参数,依赖注入,面向方面编程,泛型.更多方面?

那么,你能给出一个(正式的)关于类之间的依赖关系的定义,以及那些万无一失且涵盖所有这些案例和方面的软件包吗?

Lel*_*mbo 1

这篇文章是关于静态依赖的 - 对于动态依赖和差异,请参阅 Patrick Smacchia 的回答。

以一种易于理解的方式:当 A 不能在没有 B 的情况下独立使用时,实体(类或包)A 依赖于实体 B。

继承、聚合、组合,所有这些都引入了相关实体之间的依赖关系。

那么不存在对接口的依赖吗?

有,但界面只是起粘合剂的作用。

那么继承呢?

往上看。

那么依赖关系不仅是在包上的传递关系,而且在类级别上也是传递关系?

是的。

但你如何定义“依赖”呢?

参见上面“易于理解”的定义。也与您发布的第三个定义有关。


更新:

因此,如果包 P1 中有接口 A,并且包 P2 中的类 C 使用 A 作为

  • 方法参数,或
  • 局部变量通过 AOP 编织到 C 中,或者
  • class C implements A, 或者
  • class C<E extends A>,

那么C依赖于A,P2依赖于P1。

但是,如果接口 A 由类 B 和类 C 程序针对接口 A 实现,并且仅通过依赖注入使用 B,那么 C 仍然(静态地!)仅依赖于 A,而不依赖于 B,因为依赖注入的要点在于它不会使粘合组件产生依赖性。