组合优于聚合
聚合UML模糊,其不精确的暗示了整体-部分的关系(和许多普通关联一样)。
可以参考Rumbaugh(UML的创建者之一)的话:
并给赋予太多的,但是每个人(基于不同理由)都认为这是必要的。[RJB04]
因此,不要在UML中费心使用聚合,相反,在适当的时候要使用组合
组合,是一种很强的整体-部分聚合关系
- 某一时刻,部分的实例只属于一个组成实例
- 部分(Fingers)必须总是属于组成(Hand)(不存在随意游离的部分Finger)
- 组成要负责创建和删除部分。
如果组成被销毁,其部分也必须被销毁,或者依附于其它组成,即不允许游离的部分存在!
在UML中,带有实心箭头的关联来表示组合,箭头指向组成类。
组合的典型代码如下:
public class Hand
{
Finger f = new Finger();
.......
}