【问题标题】:What is the difference between "uses" and "depends upon"?“使用”和“取决于”有什么区别?
【发布时间】:2011-06-30 21:48:50
【问题描述】:

在这个beginners guide to Dependency Injection 中,我注意到the UML diagram 区分了“使用”和“依赖于”。

由于两者都需要在类中“使用”或“依赖”的某种形式的引用,我想知道:两者之间的真正区别是什么?

【问题讨论】:

    标签: oop uml terminology


    【解决方案1】:

    查看来自IBM Rational Software Architect documentation 的关于关系类型的引用。

    “取决于”的意思如下:

    依赖关系表示 更改为一个模型元素( 供应商或独立模型元素) 可能导致另一个模型的变化 元素(客户端或依赖模型 元素)。供应商模型元素 是独立的,因为在 客户端不影响它。客户端 模型元素取决于供应商 因为改变了供应商 影响客户。

    “使用”的含义如下:

    使用关系是依赖关系 一种模型的关系 元素需要存在 另一个模型元素(或模型集 元素)的全面实施 或操作。模型元素 需要存在另一个模型 元素是客户,模型 需要存在的元素是 供应商。虽然一个用法 关系表明正在进行 要求,这也表明 两个模型之间的联系 元素并不总是有意义或 现在。

    当我读到它时,“使用”是一种不那么严格的“依赖”。

    【讨论】:

    • “当我读到它时,“使用”是一种不那么严格的“依赖”。”不 - 它们完全不同。
    • @BonyT,你能理解一下吗?
    • 如果您使用其他对象 - 您对它的内部更改不感兴趣。但是,如果您“依赖”另一个对象,那么他们会这样做。这就是定义这两个术语的原因。
    • 嗯,我不会说“使用”总是内部的。我声明我使用了一些东西,但我最终可能不会使用它,但如果使用的对象发生了变化,我可能会受到影响。例如。我和我的手机。但是,如果我依赖某些东西,我会严格要求它存在,当然,如果那个东西发生变化,我会受到影响。例如。我和食物。
    • @Andrey Adamovich 谢谢+1,但这些定义只会让我的情况变得更糟。为什么不能解释差异以便我也能理解? :)
    【解决方案2】:

    “使用”是指一个类在其某些操作中引用另一个类的地方。

    “取决于”是 A 类在其实现中使用另一个 B 类的地方(例如,作为方法的参数)。在这种情况下,更改 B 类可能需要更改 A 类。

    注意我说的是类,但它同样适用于接口。

    维基百科对此有一篇很好的文章:http://en.wikipedia.org/wiki/Dependency_%28UML%29

    因此,例如,您可以在 Class Driver 和 Interface IVehicle 之间建立 Uses 关系,它公开了一个名为 Drive() 的方法。更改 Drive 的实现不需要对 Driver 进行任何更改,所以您说 Driver 使用 IVehicle。

    但是类 Driver 依赖于类 Hand,因为 Driver 有两个属性:Hand LeftHand 和 Hand RightHand。如果这些实现发生变化,则需要考虑驱动程序是否需要相应更新。

    【讨论】:

    • hand/driver 看起来更像是组合关系,而不是纯粹的依赖关系?
    • 是的 - 我知道 - 这不是一个很好的例子 - 一直在努力想出一个更好的例子
    • 我认为所有的组合都是依赖关系,但是是的——它们最好被描述为组合
    • @BonyT 请注意“取决于”的定义如何使用“使用”一词。难怪我无法理解两者之间的区别。 +1 目前。
    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2022-12-07
    • 2013-09-06
    • 2011-10-16
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多