Dependency injection 如何在UML中建模依赖注入?

Dependency injection 如何在UML中建模依赖注入?,dependency-injection,uml,Dependency Injection,Uml,我有一个合同班。本合同有效期为2010年1月1日至2010年12月31日 它可以处于主动或被动状态,具体取决于我向实例询问其状态的日期。如果我问2010年7月4日,它处于主动状态,但如果我问2011年1月1日,它处于被动状态 实例是使用构造函数依赖项注入创建的,即它们在创建时已经是主动的或被动的,不允许null作为内部状态成员的参数 在UML状态机图中绘制一个初始/创建的顶点。 我有两个箭头,从初始顶点引出,一个指向状态主动,另一个指向状态被动 这是UML中依赖注入的正确表示吗? 这个问题特别涉

我有一个合同班。本合同有效期为2010年1月1日至2010年12月31日

它可以处于主动或被动状态,具体取决于我向实例询问其状态的日期。如果我问2010年7月4日,它处于主动状态,但如果我问2011年1月1日,它处于被动状态

实例是使用构造函数依赖项注入创建的,即它们在创建时已经是主动的或被动的,不允许null作为内部状态成员的参数

在UML状态机图中绘制一个初始/创建的顶点。 我有两个箭头,从初始顶点引出,一个指向状态主动,另一个指向状态被动

这是UML中依赖注入的正确表示吗?

这个问题特别涉及状态机图,其中初始状态/顶点之后的第一个状态是在图的边界之外确定的

Jude/Ashtah工具允许这些类型的构造,即从图的初始顶点绘制多条线,这使我相信这是正确的UML图形语法

这与 这引发了一个关于如何用UML对DI进行建模的问题。

我不这么认为。 但要问的问题是: 类的主动版本和被动版本之间的类状态机/行为是否有所不同

如果是,则在类对象下使用两个单独的状态机图,一个用于被动,一个用于主动

活动图可用于显示在创建类之前(通过使用联接)已做出选择


如果两个实例的行为相同,因此通过相同的状态,那么只需在初始状态到第一状态的转换上放置一个标签来显示这一点,或者在第一状态中放置一个入口过程来显示它。

依赖项注入只是一个实现细节(即使它非常重要)。因此,关于如何在UML中建模依赖注入的问题,您可以将DI建模为关联、聚合或组合,取决于你想用这些类表达什么。

你可以像我在你的另一个问题中建议的那样解决状态部分,并且可以使用类图中的依赖关系来显示DI。

用显示选择的活动图来补充是个好主意。这对我来说是很直观的:你们提出的标签概念会如何改变?有并没有从状态机图(SMD)转换为使用DI实现的类的例子?我希望在一个小例子中看到整个链,从UML SMD图到实现。“你可以在构造函数中添加对该函数的调用,因此你的契约立即处于正确的状态”是的,这是我想要实现的,但是可以有多个正确的状态(在这个例子中是主动的或被动的),我对UML不太了解,无法用正确的UML表示法来表达它。正如您所回答的,使用多个初始顶点是无效的UML表示法,所以这不是一个选项。我试图找出的一部分是,从初始顶点引出的多个箭头是否有效?UML@hjo1620不是,但可以使用choice元素从该元素引出多个箭头。可能重复,更好(=更直观)回答这里(使用虚线):