Если класс зависит от класса из другого пакета, зависит ли он от всех других классов в этом пакете? - PullRequest
1 голос
/ 29 февраля 2012

В настоящее время я изучаю принципы проектирования программного обеспечения, в частности Принцип ациклических зависимостей (стр. 18)

Из приведенного примера я интерпретировал его следующим образом:зависит от класса в пакете B, то пакет A зависит от всех классов в пакете B, а также от их зависимостей (транзитивно)

Я знаю, что пакет A будет зависеть от пакета B. Но все классы пакета Bэто на самом деле не зависело - я не уверен в этом.Единственный способ, которым я думаю, что это может каскадно, как в примере, - это когда класс, от которого зависел пакет B, фактически имеет зависимость от некоторых классов в пакете B, которые затем имеют зависимости от других пакетов.

Ответы [ 3 ]

4 голосов
/ 29 февраля 2012

Пакет - это просто пространство имен. Зависимости от пакетов не существует. Вы можете зависеть от классов, и эти классы находятся в пакете, но это все. Вы не зависите от всех классов пакета, если вы зависите от одного из них.

Сказать, что класс или пакет зависит от другого пакета, - это просто ярлык, который говорит, что он зависит как минимум от одного класса этого пакета.

2 голосов
/ 29 февраля 2012

Насколько я знаю, класс в пакете A (давайте назовем его ClassA) зависит только от класса в пакете B (давайте назовем этот ClassB), который он использует.

Но если ClassB зависит от ClassBee и ClassBuzz (также в пакете B), то ClassA также будет зависеть от них.

Если один класс в пакете (A) зависит от одного класса в другом пакете (B), то A зависит от B независимо от того, использует ли класс, который вы хотите использовать (скажем, ClassApe), какой-либо из классов в пакете B.

Надеюсь, это отвечает на ваш вопрос и не слишком запутанно.

1 голос
/ 29 февраля 2012

Я думаю, что ваше последнее предложение о внутренних зависимостях в другом пакете довольно важно, поскольку пакет предположительно обеспечивает минимальный необходимый доступ, все еще стремясь функционировать должным образом.Итак, этот принцип, вероятно, советует использовать весь пакет, а не некоторые его части.

Но вы не зависите от большего количества классов, чем используете, все функции должны оставаться такими же для вас в следующих выпусках пакета с вашим доступом к публичным частям пакета, но не вы должны беспокоитьсяо внутренних зависимостях, но об авторах пакета.

...