组合(Composition)与聚合(Aggregation)的区别

一、概念上

1.Composition 表示的是'Part-od'的关系

        比如:引擎Engine是汽车Car的一部分,脱离了汽车的引擎毫无作用,没有实在的意义

2.而Aggregation表示的是'Has-a'的关系
        比如:Person有一个Address,但是Address的存在不依赖于Person,即地址本身就有其独立存在的意义,不受人的约束。
3.就强弱关系而言:

        Composition应该更强一些

二、举个栗子

现在设计几个实体类,通过实体类之间的关系来体现组合与聚合的区别:

    实体类:人

class People{
  String name;
  String identityId;  //身份属性的ID
  Body body;         //身体对象属性
  //省略getter、setter方法
}
   实体类:身体
class Body{
   String 内脏;
   String 手;
   String 脚;
}

   实体类:身份信息

class Identity{
   Integer id;
   String number;   //身份证号
   String name;    //姓名
   ....
}

由人(People)、身体(Body)、身份信息(Identity)之间的关系可以看出。人由身体所组成,应该由身体来组合为一个人,身体作为人的组合的一部分。体现在数据存储时,即不必将身体(Body)存储在数据库中,而是直接作为人的属性存在。

而Identity,记录着一个人的各种信息,脱离People之后,可能会有别的地方依旧会使用到该属性。因此这个就是聚合,在设计实体类时,直接保存其ID即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值