使用 Spring 依赖注入初始化对象状态时表示关联

Representing Associations when object state is initialized using Spring Dependency injection

我正在尝试绘制一个 class 图表,但对在类似于下面的场景中使用的关联关系感到困惑。

Interface SampleInterface{ 
    void sampleMethod();
}

class SampleInterfaceImpl implements SampleInterface{
    public void sampleMethod(){
    }
}


class launcher{
    private SampleInterface interfaceImpl;
    public void setInterfaceImpl(SampleInterface interfaceImpl)
    {
        this.setInterfaceImpl = interfaceImpl;
    }

}

在上面的示例中,Launcher class 有一个类型为 SampleInterface 的状态变量 interfaceImpl。我通过使用 Spring setter 注入来初始化 Launcher class 以将 SampleInterface 的实现作为 bean 传递。 bean 的范围是单例的。

同样的 bean 也通过 spring 传递给其他对象。

我的疑惑:

这种关系是组合还是聚合? (因为同一个 bean 被传递到任何需要它的地方并且它在单例范围内)

当状态变量是接口类型而不是 class 类型时,我们能否将关系表示为聚合或组合?或者我应该只将它表示为一个协会?

谢谢

你不应该太在意 composition/aggregation 除非它出于某种原因必不可少。如果您明确希望根据其他对象的生命周期显示某些对象的生命周期,就会出现这种情况。

所以在你的情况下你应该简单地使用一个关联。这无论如何都不会错。连接器具有关于其语义的层次结构。依赖是最低级别。协会在上面。与aggregation/composition以上关联。使用较低的级别永远不会错。它只是在解释对象之间的关系时留下了更多的自由。