我的Java项目中有类Controller
,其方法如下:
如您所见,在第一行中,我获得ActualModes
类的Singleton实例并调用方法getActualModes()
。
第一个问题是,我应该在类图中使用哪种关系。
之后,我将创建ModeContext
类的新实例,然后调用方法executeStrategy
。在这种情况下,哪个关系更好?
答案 0 :(得分:1)
应该是这样的:
对单例的访问(请注意只是方便的原型,没有任何义务或一般标准)是匿名的,因此您只有一个依赖项。相反,ModeContext
使用称为context
的私有(我不知道您所使用语言的作用域规则,所以我将其定为pivate)属性。请注意正好说明这一点的点。
答案 1 :(得分:0)
免责声明:UML未指定Java和UML之间的映射,因此,您所提问题的每个答案都值得商debate。
我认为这两种关系都是依赖关系,用虚线箭头从Controller
到ActualModes
以及从Controller
到ModeContext
绘制。根据UML 2.5规范(第7.8.4.1节),“依赖性”的定义为:
依赖关系是一种关系,表示单个模型元素或一组模型元素需要其他模型元素 为元素的规范或实现建模。
在我看来 less 不适合的一种关系类型的例子是 association ,尽管其定义(第11.5节)相当广泛:
一个关联对一组表示类型实例之间的链接的元组进行分类。 (...)关联指定了在键入的实例之间可能发生的语义关系。
一个人可能会争辩说Controller
与另外两个类之间以变量的形式存在联系,但是这些变量是局部方法变量,它们仅在方法执行期间临时存在。关联代表更持久的链接,例如类成员-就我了解UML和据我所见在实践中使用的关联。