You need to enable JavaScript to run this app. 构造函数接收enum参数但不存为属性对应的UML关系类型判定
优惠活动
大模型
产品
解决方案
定价
更多

构造函数接收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)关系,判定依据如下:

  1. UML依赖关系的核心特征是:一个类临时调用另一类的能力完成特定逻辑,被使用的类不会作为使用者的成员属性长期存储,仅在对应方法的执行周期内被临时引用。
  2. 对应你的代码场景:SomeClass 仅在构造方法执行时接收Type类型的入参,调用其createInstance()方法生成目标对象后,就不再持有Type实例的引用,也没有将其存储为自身属性,完全符合依赖关系的定义。
  3. 二者不存在关联、聚合、组合等更强的关联关系,也没有继承、接口实现的关系,因此归为依赖关系是最准确的。如果绘制UML类图,你可以用带箭头的虚线,从SomeClass指向Type表示该关系。

内容的提问来源于stack exchange,提问作者rocksNwaves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:54:01