使用 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以上关联。使用较低的级别永远不会错。它只是在解释对象之间的关系时留下了更多的自由。
我正在尝试绘制一个 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以上关联。使用较低的级别永远不会错。它只是在解释对象之间的关系时留下了更多的自由。