【发布时间】:2011-06-30 21:48:50
【问题描述】:
在这个beginners guide to Dependency Injection 中,我注意到the UML diagram 区分了“使用”和“依赖于”。
由于两者都需要在类中“使用”或“依赖”的某种形式的引用,我想知道:两者之间的真正区别是什么?
【问题讨论】:
标签: oop uml terminology
在这个beginners guide to Dependency Injection 中,我注意到the UML diagram 区分了“使用”和“依赖于”。
由于两者都需要在类中“使用”或“依赖”的某种形式的引用,我想知道:两者之间的真正区别是什么?
【问题讨论】:
标签: oop uml terminology
查看来自IBM Rational Software Architect documentation 的关于关系类型的引用。
“取决于”的意思如下:
依赖关系表示 更改为一个模型元素( 供应商或独立模型元素) 可能导致另一个模型的变化 元素(客户端或依赖模型 元素)。供应商模型元素 是独立的,因为在 客户端不影响它。客户端 模型元素取决于供应商 因为改变了供应商 影响客户。
“使用”的含义如下:
使用关系是依赖关系 一种模型的关系 元素需要存在 另一个模型元素(或模型集 元素)的全面实施 或操作。模型元素 需要存在另一个模型 元素是客户,模型 需要存在的元素是 供应商。虽然一个用法 关系表明正在进行 要求,这也表明 两个模型之间的联系 元素并不总是有意义或 现在。
当我读到它时,“使用”是一种不那么严格的“依赖”。
【讨论】:
“使用”是指一个类在其某些操作中引用另一个类的地方。
“取决于”是 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。如果这些实现发生变化,则需要考虑驱动程序是否需要相应更新。
【讨论】: