UML类图:通过构造函数传参的类关系属于依赖还是关联?
问题解答
你给出的代码示例如下:
public class ClassA{ public ClassA(ClassB b){ // do some operations or get some values etc. from ClassB b } }
结论:该关系属于依赖(Dependency),不属于关联关系
判断依据
- 关联关系的核心特征是类之间存在结构化的长期引用关系:即其中一个类会将另一个类的实例存储为自身的成员属性,在类实例的整个生命周期内都可以访问该关联对象,是强度高于依赖的关系。
- 依赖关系的核心特征是临时使用关系:仅在某段方法(包括构造方法、普通成员方法等)的执行周期内用到另一个类的实例,不会将实例留存为自身成员属性,方法执行完成后就不再持有对应实例的引用。
你描述的场景中,ClassA仅在构造方法执行过程中临时使用ClassB的实例,没有将其定义为成员属性存储,构造执行完成后ClassA的实例无法再访问该ClassB对象,完全符合依赖关系的定义。
扩展区分:如果ClassA中定义了ClassB类型的成员属性,且在构造方法中将传入的参数赋值给该成员属性,此时ClassA和ClassB才属于关联关系。
内容的提问来源于stack exchange,提问作者Ymi
相关产品推荐
相关产品推荐

