记得在当时学习uml老是很差分清聚合与组合的关系,找工做时特意复习了这块的内容,结果正巧被面试官问道,这两天又在搞这块的内容,对聚合与组合有了更清楚的了解:
聚合:表示两个对象之间是总体和部分的弱关系,部分的生命周期能够超越总体。如电脑和鼠标,就能够用一下图形表示:
面试
组合:表示两个对象之间是总体和部分的
强关系,部分的生命周期不能超越总体,或者说不能脱离总体而存在。组合关系的“部分”,是不能在总体之间进行共享的。如人和眼睛的关系:
不过,若是你要说,眼睛能够移植,是否是说能够脱离人而存在,它们就不是组合关系了?其实,UML中对象的关系都是在相应的软件环境或实际场景下定义的,这里区别聚合和组合的关系,关键仍是在于它们之中总体和部分的关系强、弱,以及它们之间的依附关系。若是刚才说眼睛能够移植给别人,那你也能够把它认为是聚合,这都要结合实际场景来讲明。
另外两个比较重要的关系是关联和依赖:
关联:简单的能够认为,若是一个类做为了另一个类的属性,那必定是关联关系。但你要知道,
聚合是一种特殊的关联,而组合又是一种特殊的聚合。通常的关联咱们认为是平级的、无总体部分关系的,如朋友关系。 依赖:对象之间的临时关系,临时性体如今不超越方法的周期。简单的说,在方法使用到的,如参数类,就必定是依赖关系。 最后想说一句,实际工做中,我并无发现区分这四种关系有多么大的用处,也许本身尚未碰到,只是以为可能每一个学习它的同窗总想把它搞清楚,但实际工做中做用并不明显。