【问题标题】:If a class depends on a class from another package, does it depend on all other classes in that package?如果一个类依赖于另一个包中的一个类,它是否依赖于该包中的所有其他类?
【发布时间】:2012-03-19 07:24:06
【问题描述】:

我目前正在学习软件设计的原理,特别是Acyclic Dependencies Principle(第 18 页)

从给出的示例中,我将其解释为:当包 A 中的一个类依赖于包 B 中的一个类时,包 A 依赖于包 B 中的所有类以及它们的依赖关系(传递性)

我知道包 A 将依赖于包 B。但是包 B 的所有类实际上并不依赖于 - 我对此不太确定。我认为它可以像示例中那样级联的唯一方法是,包 B 中依赖的类实际上依赖于包 B 中的某些类,然后这些类又依赖于其他包。

【问题讨论】:

    标签: java architecture dependencies packages


    【解决方案1】:

    我认为你关于另一个包中内部依赖关系的最后一个条款是相当重要的,只要该包应该提供所需的最低可访问性,仍然努力正常运行。所以,这个原则,可能是告诉使用整个包,而不是它的某些部分。

    但是你不依赖更多的类然后你使用,所有的功能应该在接下来的包版本中保持不变,你可以访问包的公共部分,但不是你应该担心内部依赖,但包的作者。

    【讨论】:

      【解决方案2】:

      据我所知,包 A 中的类(我们称之为 ClassA)仅依赖于它使用的包 B 中的类(我们称之为 ClassB)。

      但是如果 ClassB 依赖于 ClassBee 和 ClassBuzz(也在包 B 中),那么 ClassA 也将依赖于这些。

      如果包 (A) 中的一个类依赖于另一个包 (B) 中的一个类,则 A 依赖于 B,无论您要使用的类(例如 ClassApe)是否使用包中的任何类B.

      我希望这能回答您的问题并且不会过于混乱。

      【讨论】:

        【解决方案3】:

        包只是一个命名空间。不存在对包的依赖。您可以依赖类,这些类都在一个包中,仅此而已。如果你依赖其中一个类,你就不会依赖一个包的所有类。

        说一个类或包依赖于另一个包只是说它至少依赖于这个包的一个类。

        【讨论】:

        • +1:但是打包(即,作为 jars 交付)可能会导致类似于包级依赖的东西,这更真实一些,并且周期可能很重要。
        • @Don Roby - 我从没想过这样包装。如果您在 jar(包)中使用一个类,那么它是否需要编译该 jar 中包含的所有类?
        猜你喜欢
        • 1970-01-01
        • 2011-11-09
        • 2023-03-21
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多