我目前正在学习软件设计的原则,特别是Acyclic Dependencies Principle(第18页)
从给出的示例中我将其解释为:当包A中的一个类依赖于包B中的类时,包A依赖于包B中的所有类及其依赖性(可传递)
我知道包A将依赖于包B.但所有包B的实际上并不依赖于它 - 我对此不太确定。我认为它可以像示例中那样级联的唯一方法是,在包B中依赖的类实际上依赖于包B中的某些类,这些类依赖于其他包。
答案 0 :(得分:4)
包只是一个命名空间。对包的依赖性不存在。你可以依赖类,这些类都在一个包中,但就是这样。如果依赖于其中一个类,则不依赖于包的所有类。
说一个类或包依赖于另一个包只是一个快捷方式,说它至少依赖于这个包的一个类。
答案 1 :(得分:2)
据我所知,包A中的类(让我们称之为ClassA)仅依赖于它使用的包B中的类(让我们称之为ClassB)。
但如果ClassB依赖于ClassBee和ClassBuzz(也在包B中),那么ClassA也将依赖于那些。
如果包(A)中的一个类依赖于另一个包(B)中的一个类,则A依赖于B,无论您要使用的类(比如ClassApe)是否使用包中的任何类乙
我希望这能回答你的问题并且不会过于混乱。
答案 2 :(得分:1)
我认为关于其他包中的内部依赖关系的最后一个条款是相当重要的,只要该包提供所需的最小可访问性,仍然努力正常运行。所以,这个原则可能会告诉你使用整个包装,而不是它的一些部件。
但是你不依赖于你使用的更多类,所有的功能在下面的软件包版本中应该保持相同,你可以访问软件包的公共部分,但不是你应该担心内部依赖性,但是包的作者。