Java中的聚合和组合
聚合(Aggregation) 关系是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。
组合(Composition) 关系是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。
打个比方说,聚合就像你和你电脑的关系,你或者电脑消失了,另一者都还可以继续存活。
但组合就像你和你脑袋的关系,二者相互依赖,相互依存。
代码:
class Hand{
}
class Computer{
}
//组合:
class Person{
private Hand hand;
public Person(){
hand = new Hand();
}
}
//聚合:
class Person{
private Computer computer;
public setComputer(){
computer = new Computer();
}
}