UML中合成(Composition)和聚合(Aggregation)的区别

UML 做棵大树 6年前 (2018-01-06) 1933次浏览 0个评论

当一个类 A 使用了另一个类 B 时,到底是合成还是聚合的关系呢?
例如

public class A{
B b;
...
}

 

当一个 A 类型的对象销毁了其存储单元时,引用变量 b 也将销毁存储单元。但是 b 引用的对象是否也应当销毁存储单元?有两种情况需要考虑。
(1)合成(Composition):当一个 A 类型的对象销毁了存储单元时,b 引用的对象也销毁存储单元。换句话说,b 引用的对象的存在依赖于 A 类型的对象。
(2)聚合(Aggregation):当一个 A 类型的对象销毁了存储单元时,b 引用的对象并没有销毁存储单元。换句话说,b 引用的对象独立于于 A 类型的对象。
聚合的情况下,代码如下所示:

public class A{ 
   B b; 

  public B sentB(){ 
      return b; 
  } 
  .... 
}

 


做棵大树 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UML 中合成(Composition)和聚合(Aggregation)的区别
喜欢 (0)
[欢迎投币]
分享 (0)
关于作者:
一个整天无所事事的,有时候忽然热血的孩子
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址