java组合和聚合

可能很多人会把组合和聚合理解成一样事物,事实上,这是两个差别很大的东西,两者的差别是本质上的差别。

参考博客:https://www.cnblogs.com/TaoLeonis/p/7126340.html   https://blog.csdn.net/llbupt/article/details/6618210

组合

比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合

聚合

可以说聚合是一种强组合的关系,与上面组合中所说的,如果b所指向的对象还会有另外的引用指向它,这种情况叫聚合。

组合和聚合的联系与区别

①两者都是都是整体与部分的关系。

②组合的关系更强一点,对组合关系来说,如果失去部分,整体也将不存在了。


代码实现上来看:
③组合:在整体的构造器中实例化部分,这个部分不能被其他实例共享。整体与部分的生命周期是同步的。

④而聚合关系的部分,可以在构造器中通过参数传递的形式进行初始化。

从数据库的层面上看:
⑤组合关系:需要级联删除,而聚合关系不需要。

两者代码的实现


组合:
class Person{
  private Hand hand;
  public Person(){
    hand = new Hand();
  }
}


聚合:
class Person{
  private Computer computer;
  public setComputer(){
  computer = new Computer();
  }
}

猜你喜欢

转载自www.cnblogs.com/zhhhb/p/11842301.html