构造函数接收enum参数但不存为属性对应的UML关系类型判定
原问题翻译
我正在设计一个软件包,其中某个特定类会将多个枚举作为构造函数的入参。这些枚举不会成为类的属性,仅用于实例化类的属性对象。我还没有编写正式代码,以下伪代码可说明我的设计思路:
Enum Type { TYPE_A(A::new), TYPE_B(B::new); private Supplier supplier; private Type(Supplier<X> supplier) { this.supplier = supplier; } public X createInstance() { return supplier.get(); } } Class SomeClass { Object someObject; public SomeClass(Type t) { someObject = t.createInstance(); } }
请问上述场景中,Type与SomeClass之间的关系应该归类为哪一种UML关系?
问题解答
二者属于 UML依赖(Dependency)关系,判定依据如下:
- UML依赖关系的核心特征是:一个类临时调用另一类的能力完成特定逻辑,被使用的类不会作为使用者的成员属性长期存储,仅在对应方法的执行周期内被临时引用。
- 对应你的代码场景:
SomeClass仅在构造方法执行时接收Type类型的入参,调用其createInstance()方法生成目标对象后,就不再持有Type实例的引用,也没有将其存储为自身属性,完全符合依赖关系的定义。 - 二者不存在关联、聚合、组合等更强的关联关系,也没有继承、接口实现的关系,因此归为依赖关系是最准确的。如果绘制UML类图,你可以用带箭头的虚线,从
SomeClass指向Type表示该关系。
内容的提问来源于stack exchange,提问作者rocksNwaves
相关产品推荐
相关产品推荐

