В чем разница между «использует» и «зависит от»? - PullRequest
7 голосов
/ 01 июля 2011

В этом руководстве для начинающих по внедрению зависимостей я заметил, что диаграмма UML различает слова "использует" и "зависит от".

Поскольку оба требуют некоторой формы ссылки в классе, которая «использует» или «зависит от», я задаюсь вопросом: в чем действительно разница между этими двумя?

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

Ознакомьтесь с цитатами о типах отношений, взятыми из документации IBM Rational Software Architect .

«зависит от» означает следующее:

Отношение зависимости указывает который изменяется на один элемент модели ( поставщик или независимый модельный элемент) может вызвать изменения в другой модели элемент (клиент или зависимая модель элемент). Элемент модели поставщика является независимым, потому что изменение в клиент не влияет на это. Клиент элемент модели зависит от поставщика потому что смена поставщика влияет на клиента.

«использует» означает следующее:

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

Насколько я понимаю, «использование» является менее строгой «зависимостью».

1 голос
/ 01 июля 2011

«Использование» - это когда один класс ссылается на другой класс для некоторых своих операций.

«Зависит от» - это когда класс A использует другой класс B в своей реализации (например, в качестве параметра для метода). В этом случае изменение класса B может потребовать изменения класса A.

Обратите внимание, что я сказал Class, но это в равной степени относится и к интерфейсам.

В Википедии есть хорошая статья на эту тему: http://en.wikipedia.org/wiki/Dependency_%28UML%29

Так, например, у вас может быть связь Uses между драйвером класса и интерфейсом IVehicle, который предоставляет метод Drive (). Изменения в реализации Drive не требуют никаких изменений в Driver, поэтому вы говорите, что Driver использует IVehicle.

Однако класс Driver имеет зависимость от класса Hand, поскольку Driver имеет два свойства: Hand LeftHand и Hand RightHand. Если их реализация изменится, нужно будет подумать, нужно ли обновить драйвер соответствующим образом.

...