Dav*_*Far 7 architecture oop dependencies
许多文章/书籍....谈论阶级或包依赖,很少解释它是什么.我确实找到了一些定义,但它们各不相同,可能并未涵盖所有情况.例如:
要考虑的其他方面是方法参数,依赖注入,面向方面编程,泛型.更多方面?
那么,你能给出一个(正式的)关于类之间的依赖关系的定义,以及那些万无一失且涵盖所有这些案例和方面的软件包吗?
这篇文章是关于静态依赖的 - 对于动态依赖和差异,请参阅 Patrick Smacchia 的回答。
以一种易于理解的方式:当 A 不能在没有 B 的情况下独立使用时,实体(类或包)A 依赖于实体 B。
继承、聚合、组合,所有这些都引入了相关实体之间的依赖关系。
那么不存在对接口的依赖吗?
有,但界面只是起粘合剂的作用。
那么继承呢?
往上看。
那么依赖关系不仅是在包上的传递关系,而且在类级别上也是传递关系?
是的。
但你如何定义“依赖”呢?
参见上面“易于理解”的定义。也与您发布的第三个定义有关。
更新:
因此,如果包 P1 中有接口 A,并且包 P2 中的类 C 使用 A 作为
class C implements A
, 或者class C<E extends A>
,那么C依赖于A,P2依赖于P1。
但是,如果接口 A 由类 B 和类 C 程序针对接口 A 实现,并且仅通过依赖注入使用 B,那么 C 仍然(静态地!)仅依赖于 A,而不依赖于 B,因为依赖注入的要点在于它不会使粘合组件产生依赖性。