UML 中的“创建”与“实例化”依赖关系

Vit*_*aly 5 uml

根据 UML 规范,我们可以通过<<Create>><<Instantiate>>构造型来表示两个类之间的依赖关系。

你知道这些刻板印象之间有什么区别吗?

它是用 UML 规范 2.5(第 22.3 章标准构造型)编写的:

  1. 为了<<Create>>

    使用依赖性表示客户端分类器创建供应商分类器的实例

  2. 为了<<Instantiate>>

    分类器之间的使用依赖性表明客户端上的操作创建供应商的实例

Vit*_*aly 2

我注意到 << Create >> 构造型不仅可以应用于“Usage”依赖项,还可以应用于“BehavioralFeature”(参见 UML 规范中的第 22.2 节)。

在 UML 中,“BehavioralFeature”对应于类或接口中的特定方法。

因此,如果我们用 << Create >> 或 << Destroy >> 标记类中的特定方法,我们的意思是它创建/销毁该类的实例。

我们可以将使用 << Create >> 标记方法与使用 << Create >> 标记使用依赖项进行类比。

如果我们用 << Create >> 标记使用依赖关系,则这意味着客户端类中的特定方法创建供应商类的实例。因此,我们在客户类的主体中创建了一个Supplier的实例。客户和供应商在这里紧密耦合。

另一方面,如果我们用 << Instantiate >> 标记使用依赖关系,则 Client 类将Supplier 的创建委托给其他对象。因此,他间接创建了供应商。在这种情况下,客户和供应商是松散耦合的。例如,如果我们通过创建模式之一创建供应商,就会发生这种情况:对象池、原型、工厂方法等。

笔记:

总的来说,与规范的差异并不是很清楚。希望在它的未来版本(2.5以上版本)中我们有更清晰的定义。